home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / objdrawhires.s < prev    next >
Text File  |  1997-01-31  |  66KB  |  4,706 lines

  1.  
  2. currzone: dc.w 0
  3.  
  4. ty3d: dc.l -100*1024
  5. by3d: dc.l 1*1024
  6.  
  7. TOPOFROOM: dc.l 0
  8. BOTOFROOM: dc.l 0
  9. AFTERWATTOP: dc.l 0
  10. AFTERWATBOT: dc.l 0
  11. BEFOREWATTOP: dc.l 0
  12. BEFOREWATBOT: dc.l 0
  13. ROOMBACK: dc.l 0
  14.  
  15. objclipt: dc.w 0
  16. objclipb: dc.w 0
  17. rightclipb: dc.w 0
  18. leftclipb: dc.w 0
  19.  
  20. ObjDraw:
  21.  
  22.  move.w (a0)+,d0
  23.  cmp.w #1,d0
  24.  blt.s beforewat
  25.  beq.s afterwat
  26.  bgt.s fullroom
  27.  
  28. beforewat:
  29.  move.l BEFOREWATTOP,ty3d
  30.  move.l BEFOREWATBOT,by3d
  31.  bra.s donetopbot
  32.  
  33. afterwat:
  34.  move.l AFTERWATTOP,ty3d
  35.  move.l AFTERWATBOT,by3d
  36.  bra.s donetopbot
  37.  
  38. fullroom:
  39.  move.l TOPOFROOM(pc),ty3d
  40.  move.l BOTOFROOM(pc),by3d
  41.  
  42. donetopbot:
  43.  
  44. ; move.l (a0)+,by3d
  45. ; move.l (a0)+,ty3d
  46.  
  47.  movem.l d0-d7/a1-a6,-(a7)
  48.  
  49.  move.w rightclip,d0
  50.  sub.w leftclip,d0
  51.  subq #1,d0
  52.  ble doneallinfront 
  53.  
  54. ; CACHE_ON d6
  55.  
  56.  move.l ObjectData,a1
  57.  move.l #ObjRotated,a2
  58.  move.l #depthtable,a3
  59.  move.l a3,a4
  60.  move.w #79,d7
  61. emptytab:
  62.  move.l #$80010000,(a3)+
  63.  dbra d7,emptytab
  64.  
  65.  moveq #0,d0
  66. insertanobj
  67.  move.w (a1),d1
  68.  blt sortedall
  69.  move.w GraphicRoom(a1),d2
  70.  cmp.w currzone(pc),d2
  71.  beq.s itsinthiszone 
  72.  
  73. notinthiszone:
  74.  adda.w #64,a1
  75.  addq #1,d0
  76.  bra insertanobj
  77.  
  78. itsinthiszone:
  79.  
  80.  move.b DOUPPER,d4
  81.  move.b ObjInTop(a1),d3
  82.  eor.b d4,d3
  83.  bne.s notinthiszone
  84.  
  85.  move.w 2(a2,d1.w*8),d1    ; zpos
  86.  
  87.  move.l #depthtable-4,a4
  88. stillinfront:
  89.  addq #4,a4
  90.  cmp.w (a4),d1
  91.  blt stillinfront
  92.  move.l #enddepthtab-4,a5
  93. finishedshift
  94.  move.l -(a5),4(a5)
  95.  cmp.l a4,a5
  96.  bgt.s finishedshift
  97.  
  98.  move.w d1,(a4)
  99.  move.w d0,2(a4)
  100.  
  101.  adda.w #64,a1
  102.  addq #1,d0
  103.  
  104.  bra insertanobj
  105.  
  106. sortedall:
  107.  
  108.  move.l #depthtable,a3
  109.  
  110. gobackanddoanother
  111.  move.w (a3)+,d0
  112.  blt.s doneallinfront
  113.  
  114.  move.w (a3)+,d0
  115.  bsr DrawtheObject
  116.  bra gobackanddoanother
  117.  
  118. doneallinfront
  119.  
  120.  movem.l (a7)+,d0-d7/a1-a6
  121.  rts
  122.  
  123. depthtable: ds.l 80
  124. enddepthtab:
  125.  
  126. DrawtheObject:
  127.  
  128.  movem.l d0-d7/a0-a6,-(a7)
  129.   
  130.  move.l ObjectData,a0
  131.  move.l #ObjRotated,a1
  132.  asl.w #6,d0
  133.  adda.w d0,a0
  134.  
  135.  move.b ObjInTop(a0),IMINTHETOPDAD
  136.  
  137.  move.w (a0),d0
  138.  move.w 2(a1,d0.w*8),d1    ; z pos
  139.  
  140. ; Go through clip pts to see which
  141. ; apply.
  142.  
  143. ; move.w #0,d2    ; leftclip
  144. ; move.w #96,d3  ; rightclip
  145.  
  146. ; move.l EndOfClipPt,a6
  147. ;checkclips:
  148. ; subq #8,a6
  149. ; cmp.l #ClipTable,a6
  150. ; blt outofcheckclips
  151.  
  152. ; cmp.w 2(a6),d1
  153. ; bgt.s cantleft
  154. ; move.w (a6),d4
  155. ; cmp.w d4,d2
  156. ; bgt.s cantleft
  157. ; move.w d4,d2
  158. ;cantleft:
  159.  
  160. ; cmp.w 6(a6),d1
  161. ; bgt.s cantright
  162. ; move.w 4(a6),d4
  163. ; cmp.w d4,d3
  164. ; blt.s cantright
  165. ; move.w d4,d3
  166. ;cantright:
  167.  
  168. ;outofcheckclips:
  169.  
  170. ; move.w d2,leftclipb
  171. ; move.w d3,rightclipb
  172.  
  173.  move.w leftclip,d0
  174.  asr.w #1,d0
  175.  move.w d0,leftclipb
  176.  move.w rightclip,d0
  177.  asr.w #1,d0
  178.  move.w d0,rightclipb
  179.  
  180.  cmp.b #$ff,6(a0)
  181.  bne BitMapObj
  182.  
  183.  bsr PolygonObj
  184.  movem.l (a7)+,d0-d7/a0-a6
  185.  rts
  186.  
  187. glassobj:
  188.  move.w (a0)+,d0    ;pt num
  189.  move.w 2(a1,d0.w*8),d1
  190.  cmp.w #25,d1
  191.  ble objbehind
  192.  
  193.  move.w topclip,d2
  194.  move.w botclip,d3
  195.  
  196.  move.l ty3d,d6
  197.  sub.l yoff,d6
  198.  divs d1,d6
  199.  add.w MIDDLEY,d6
  200.  cmp.w d3,d6
  201.  bge objbehind
  202.  cmp.w d2,d6
  203.  bge.s .okobtc
  204.  move.w d2,d6
  205. .okobtc:
  206.  move.w d6,objclipt
  207.  
  208.  move.l by3d,d6
  209.  sub.l yoff,d6
  210.  divs d1,d6
  211.  add.w MIDDLEY,d6
  212.  cmp.w d2,d6
  213.  ble objbehind
  214.  cmp.w d3,d6
  215.  ble.s .okobbc
  216.  move.w d3,d6
  217. .okobbc:
  218.  move.w d6,objclipb
  219.  
  220.  move.l 4(a1,d0.w*8),d0
  221.  move.l (a0)+,d2    ; height
  222.  ext.l d2
  223.  asl.l #7,d2
  224.  sub.l yoff,d2
  225.  divs d1,d2    
  226.  add.w MIDDLEY,d2
  227.  
  228.  divs d1,d0
  229.  add.w MIDDLEX,d0    ;x pos of middle
  230.  
  231. ; Need to calculate:
  232. ; Width of object in pixels
  233. ; height of object in pixels
  234. ; horizontal constants
  235. ; vertical constants.
  236.  
  237.  move.l #consttab,a3
  238.  
  239.  moveq #0,d3
  240.  moveq #0,d4
  241.  move.b (a0)+,d3
  242.  move.b (a0)+,d4
  243.  asl.w #7,d3
  244.  asl.w #7,d4
  245.  divs d1,d3 ;width in pixels
  246.  divs d1,d4 ;height in pixels
  247.  sub.w d4,d2
  248.  sub.w d3,d0
  249.  cmp.w rightclipb,d0
  250.  bge objbehind
  251.  add.w d3,d3
  252.  cmp.w objclipb,d2
  253.  bge objbehind
  254.  
  255.  add.w d4,d4
  256.  
  257.  move.w d3,realwidth
  258.  move.w d4,realheight
  259.  
  260. * OBTAIN POINTERS TO HORIZ AND VERT
  261. * CONSTANTS FOR MOVING ACROSS AND
  262. * DOWN THE OBJECT GRAPHIC.
  263.  
  264.  move.w d1,d7
  265.  moveq #0,d6
  266.  move.b 6(a0),d6
  267.  add.w d6,d6
  268.  mulu d6,d7
  269.  move.b -2(a0),d6
  270.  divu d6,d7
  271.  swap d7
  272.  clr.w d7
  273.  swap d7
  274.  
  275.  lea (a3,d7.l*8),a2    ; pointer to
  276.             ; horiz const
  277.  move.w d1,d7
  278.  move.b 7(a0),d6
  279.  add.w d6,d6
  280.  mulu d6,d7
  281.  move.b -1(a0),d6
  282.  divu d6,d7
  283.  swap d7
  284.  clr.w d7
  285.  swap d7
  286.  lea (a3,d7.l*8),a3    ; pointer to
  287.              ; vertical c.
  288.  
  289. * CLIP OBJECT TO TOP AND BOTTOM
  290. * OF THE VISIBLE DISPLAY
  291.  
  292.  moveq #0,d7
  293.  cmp.w objclipt,d2
  294.  bge.s .objfitsontop
  295.  
  296.  sub.w objclipt,d2
  297.  add.w d2,d4    ;new height in
  298.         ;pixels
  299.  ble objbehind  ; nothing to draw
  300.  
  301.  move.w d2,d7
  302.  neg.w d7    ; factor to mult.
  303.          ; constants by
  304.          ; at top of obj.
  305.  move.w objclipt,d2
  306.  
  307. .objfitsontop:
  308.  
  309.  move.w objclipb,d6
  310.  sub.w d2,d6
  311.  cmp.w d6,d4
  312.  ble.s .objfitsonbot
  313.  
  314.  move.w d6,d4
  315.  
  316. .objfitsonbot:
  317.  
  318.  subq #1,d4
  319.  blt objbehind
  320.  
  321.  move.l #ontoscr,a6
  322.  move.l (a6,d2.w*4),d2
  323.  
  324.  add.l FASTBUFFER,d2
  325.  move.l d2,toppt
  326.  
  327.  move.l #WorkSpace,a5
  328.  move.l #glassball,a4
  329.  cmp.w leftclipb,d0
  330.  bge.s .okonleft
  331.  
  332.  sub.w leftclipb,d0
  333.  add.w d0,d3
  334.  ble objbehind
  335.  
  336.  move.w (a2),d1
  337.  move.w 2(a2),d2
  338.  neg.w d0
  339.  muls d0,d1
  340.  mulu d0,d2
  341.  swap d2
  342.  add.w d2,d1
  343.  asl.w #7,d1
  344.  lea (a5,d1.w),a5
  345.  lea (a4,d1.w),a4
  346.  
  347.  move.w leftclipb,d0
  348.  
  349. .okonleft:
  350.  
  351.  move.w d0,d6
  352.  add.w d3,d6
  353.  sub.w rightclipb,d6
  354.  blt.s .okrightside
  355.  
  356.  sub.w #1,d3
  357.  sub.w d6,d3
  358.  
  359. .okrightside:
  360.  
  361.  move.l #objintocop,a1
  362.  sub.l a1,a1
  363.  move.w d0,a1
  364.  add.w a1,a1
  365.  
  366.  move.w (a3),d5
  367.  move.w 2(a3),d6
  368.  muls d7,d5
  369.  mulu d7,d6
  370.  swap d6
  371.  add.w d6,d5
  372. ; add.w 2(a0),d5    ;d5 contains
  373.          ;top offset into
  374.          ;each strip.
  375.  add.l #$80000000,d5
  376.      
  377.  move.l (a2),d6
  378.  moveq.l #0,d7
  379.  move.l a5,midobj
  380.  move.l a4,midglass
  381.  move.l (a3),d2
  382.  swap d2
  383.  move.l #times128,a0
  384.  
  385.  movem.l d0-d7/a0-a6,-(a7)
  386.  
  387.  move.w d3,d1
  388.  ext.l d1
  389.  swap d1
  390.  move.w d4,d2
  391.  ext.l d2
  392.  swap d2
  393.  asr.l #6,d1
  394.  asr.l #6,d2
  395.  move.w d1,d5
  396.  move.w d2,d6
  397.  swap d1
  398.  swap d2
  399.  
  400.  muls #320,d2
  401.  
  402.  move.l #WorkSpace,a0
  403.  
  404.  move.w #63,d0
  405. .readinto:
  406.  swap d0
  407.  move.w #63,d0
  408.  move.l toppt(pc),a6
  409.  adda.w a1,a6
  410.  add.w d1,a1
  411.  add.w d5,d7
  412.  bcc.s .noadmoreh
  413.  addq #1,a1
  414. .noadmoreh:
  415.  swap d7
  416.  move.w #0,d7 
  417. .readintodown:
  418.  move.w (a6),d3
  419.  move.w d3,(a0)+
  420.  add.w d2,a6
  421.  add.w d6,d7
  422.  bcc.s .noadmore
  423.  adda.w #320,a6
  424. .noadmore:
  425.  dbra d0,.readintodown
  426.  swap d0
  427.  swap d7
  428.  dbra d0,.readinto
  429.  
  430.  
  431. ; Want to zoom an area d3*d4
  432. ; in size up to 64*64 in size.
  433. ; move.l #WorkSpace,a0
  434. ; move.l frompt,a2
  435. ; move.w #104*4,d3
  436. ; move.w #1,d6
  437. ;.ribl
  438. ; move.w #31,d0
  439. ;.readinto
  440. ; move.w #15,d1
  441. ; move.l a2,a1
  442. ;.readintodown
  443. ; move.w (a1),(a0)+
  444. ; adda.w d3,a1
  445. ; move.w (a1),(a0)+
  446. ; adda.w d3,a1
  447. ; move.w (a1),(a0)+
  448. ; adda.w d3,a1
  449. ; move.w (a1),(a0)+
  450. ; adda.w d3,a1
  451. ; dbra d1,.readintodown
  452. ;; add.w #256-128,a0
  453. ; addq #4,a2
  454. ; dbra d0,.readinto
  455. ; addq #4,a2
  456. ; dbra d6,.ribl
  457.  
  458.  movem.l (a7)+,d0-d7/a0-a6
  459.  
  460.  move.l #darkentab,a2
  461.  move.l toppt,d1
  462.  add.l a1,d1
  463.  move.l d1,toppt
  464.  move.l d6,a1
  465.  moveq #0,d6
  466.  
  467. .drawrightside:
  468.  swap d7
  469.  move.l midglass(pc),a4
  470.  adda.w (a0,d7.w*2),a4
  471.  swap d7
  472.  add.l a1,d7
  473.  move.l toppt(pc),a6
  474.  addq.l #1,toppt
  475.  
  476.  move.l d5,d1
  477.  move.w d4,-(a7)
  478.  swap d3
  479. .drawavertstrip
  480.  move.w (a4,d1.w*2),d3
  481.  blt.s .itsbackground
  482.  move.b (a5,d3.w*2),d6
  483.  move.b (a2,d6.w),(a6)
  484. .itsbackground
  485.  adda.w #320,a6
  486.  addx.l d2,d1
  487.  dbra d4,.drawavertstrip
  488.  swap d3
  489.  move.w (a7)+,d4
  490.  
  491.  dbra d3,.drawrightside
  492.  movem.l (a7)+,d0-d7/a0-a6
  493.  
  494.  rts
  495.  
  496. realwidth: dc.w 0
  497. realheight: dc.w 0
  498.  
  499. AUXX: dc.w 0
  500. AUXY: dc.w 0
  501.  
  502. midglass:
  503.  dc.l 0
  504. times128:
  505. val SET 0
  506.  REPT 100
  507.  dc.w val*128
  508. val SET val+1
  509.  ENDR
  510.  
  511. BRIGHTTOADD: dc.w 0
  512.  
  513. glareobj:
  514.  
  515.  
  516.  move.w (a0)+,d0    ;pt num
  517.  move.w 2(a1,d0.w*8),d1
  518.  cmp.w #25,d1
  519.  ble objbehind
  520.  
  521.  move.w topclip,d2
  522.  move.w botclip,d3
  523.  
  524.  move.l ty3d,d6
  525.  sub.l yoff,d6
  526.  divs d1,d6
  527.  add.w MIDDLEY,d6
  528.  cmp.w d3,d6
  529.  bge objbehind
  530.  cmp.w d2,d6
  531.  bge.s .okobtc
  532.  move.w d2,d6
  533. .okobtc:
  534.  move.w d6,objclipt
  535.  
  536.  move.l by3d,d6
  537.  sub.l yoff,d6
  538.  divs d1,d6
  539.  add.w MIDDLEY,d6
  540.  cmp.w d2,d6
  541.  ble objbehind
  542.  cmp.w d3,d6
  543.  ble.s .okobbc
  544.  move.w d3,d6
  545. .okobbc:
  546.  move.w d6,objclipb
  547.  
  548.  move.l 4(a1,d0.w*8),d0
  549.  move.w AUXX,d2
  550.  ext.l d2
  551.  asl.l #7,d2
  552.  add.l d2,d0
  553.  addq #2,a0
  554.  move.l #SHADINGTABLE-512,a4
  555.  
  556.  move.w (a0)+,d2    ; height
  557.  add.w AUXY,d2
  558.  ext.l d2
  559.  asl.l #7,d2
  560.  sub.l yoff,d2
  561.  divs d1,d2    
  562.  add.w MIDDLEY,d2
  563.  
  564.  divs d1,d0
  565.  add.w MIDDLEX,d0    ;x pos of middle
  566.  
  567. ; Need to calculate:
  568. ; Width of object in pixels
  569. ; height of object in pixels
  570. ; horizontal constants
  571. ; vertical constants.
  572.  move.l LINKFILE,a6
  573.  lea FrameData(a6),a6
  574.  move.l #Objects,a5
  575.  move.w 2(a0),d7
  576.  neg.w d7
  577.  asl.w #4,d7
  578.  adda.w d7,a5
  579.  asl.w #4,d7
  580.  adda.w d7,a6
  581.  
  582.  move.w 4(a0),d7
  583.  lea (a6,d7.w*8),a6
  584.  
  585.  move.l #consttab,a3
  586.  
  587.  moveq #0,d3
  588.  moveq #0,d4
  589.  move.b (a0)+,d3
  590.  move.b (a0)+,d4
  591.  lsl.l #7,d3
  592.  lsl.l #7,d4
  593.  divs d1,d3 ;width in pixels
  594.  divs d1,d4 ;height in pixels
  595.  
  596.  sub.w d4,d2
  597.  sub.w d3,d0
  598.  cmp.w rightclipb,d0
  599.  bge objbehind
  600.  add.w d3,d3
  601.  cmp.w objclipb,d2
  602.  bge objbehind
  603.  
  604.  add.w d4,d4
  605.  
  606. * OBTAIN POINTERS TO HORIZ AND VERT
  607. * CONSTANTS FOR MOVING ACROSS AND
  608. * DOWN THE OBJECT GRAPHIC.
  609.  
  610.  move.l (a5)+,WAD_PTR
  611.  move.l (a5)+,PTR_PTR
  612.  
  613.  move.l (a6),d7
  614.  move.w d7,DOWN_STRIP
  615.  move.l PTR_PTR,a5
  616.  swap d7
  617.  asl.w #2,d7
  618.  adda.w d7,a5
  619.  
  620.  move.w d1,d7
  621.  moveq #0,d6
  622.  move.w 4(a6),d6
  623.  add.w d6,d6
  624.  subq #1,d6
  625.  mulu d6,d7
  626.  moveq #0,d6
  627.  move.b -2(a0),d6
  628.  beq objbehind
  629.  divu d6,d7
  630.  swap d7
  631.  clr.w d7
  632.  swap d7
  633.  lea (a3,d7.l*8),a2    ; pointer to
  634.             ; horiz const
  635.  move.w d1,d7
  636.  move.w 6(a6),d6
  637.  add.w d6,d6
  638.  subq #1,d6
  639.  mulu d6,d7
  640.  moveq #0,d6
  641.  move.b -1(a0),d6
  642.  beq objbehind
  643.  divu d6,d7
  644.  swap d7
  645.  clr.w d7
  646.  swap d7
  647.  lea (a3,d7.l*8),a3    ; pointer to
  648.              ; vertical c.
  649.  
  650. * CLIP OBJECT TO TOP AND BOTTOM
  651. * OF THE VISIBLE DISPLAY
  652.  
  653.  moveq #0,d7
  654.  cmp.w objclipt,d2
  655.  bge.s objfitsontopGLARE
  656.  
  657.  sub.w objclipt,d2
  658.  add.w d2,d4    ;new height in
  659.         ;pixels
  660.  ble objbehind  ; nothing to draw
  661.  
  662.  move.w d2,d7
  663.  neg.w d7    ; factor to mult.
  664.          ; constants by
  665.          ; at top of obj.
  666.  move.w objclipt,d2
  667.  
  668. objfitsontopGLARE:
  669.  
  670.  move.w objclipb,d6
  671.  sub.w d2,d6
  672.  cmp.w d6,d4
  673.  ble.s objfitsonbotGLARE
  674.  
  675.  move.w d6,d4
  676.  
  677. objfitsonbotGLARE:
  678.  
  679.  subq #1,d4
  680.  blt objbehind
  681.  
  682.  move.l #ontoscr,a6
  683.  move.l (a6,d2.w*4),d2
  684.  add.l FASTBUFFER,d2
  685.  move.l d2,toppt
  686.  
  687.  cmp.w leftclipb,d0
  688.  bge.s okonleftGLARE
  689.  
  690.  sub.w leftclipb,d0
  691.  add.w d0,d3
  692.  ble objbehind
  693.  
  694.  move.w (a2),d1
  695.  move.w 2(a2),d2
  696.  neg.w d0
  697.  muls d0,d1
  698.  mulu d0,d2
  699.  swap d2
  700.  add.w d2,d1
  701.  lea (a5,d1.w*4),a5
  702.  
  703.  move.w leftclipb,d0
  704.  
  705. okonleftGLARE:
  706.  
  707.  move.w d0,d6
  708.  add.w d3,d6
  709.  sub.w rightclipb,d6
  710.  blt.s okrightsideGLARE
  711.  
  712.  sub.w #1,d3
  713.  sub.w d6,d3
  714.  
  715. okrightsideGLARE:
  716.  
  717.  ext.l d0
  718.  add.l d0,toppt
  719.  
  720.  
  721.  move.w (a3),d5
  722.  move.w 2(a3),d6
  723.  muls d7,d5
  724.  mulu d7,d6
  725.  swap d6
  726.  add.w d6,d5
  727.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  728.          ;top offset into
  729.          ;each strip.
  730.  add.l #$80000000,d5
  731.      
  732.  move.l (a2),a2
  733.  moveq.l #0,d7
  734.  move.l a5,midobj
  735.  move.l (a3),d2
  736.  swap d2
  737.  
  738.  move.l #0,a1
  739.  
  740.  
  741. drawrightsideGLARE:
  742.  swap d7
  743.  move.l midobj(pc),a5
  744.  lea (a5,d7.w*4),a5
  745.  swap d7
  746.  add.l a2,d7
  747.  move.l WAD_PTR(PC),a0
  748.  
  749.  move.l toppt(pc),a6
  750.  adda.w a1,a6
  751.  addq #1,a1
  752.  move.l (a5),d1
  753.  beq blankstripGLARE
  754.  
  755.  and.l #$ffffff,d1
  756.  add.l d1,a0
  757.  
  758.  move.b (a5),d1
  759.  cmp.b #1,d1
  760.  bgt.s ThirdThirdGLARE
  761.  beq.s SecThirdGLARE
  762.  move.l d5,d6
  763.  move.l d5,d1
  764.  move.w d4,-(a7)
  765. .drawavertstrip
  766.  move.b 1(a0,d1.w*2),d0
  767.  and.b #%00011111,d0
  768.  beq.s .dontplotthisoneitsblack
  769.  lsl.w #8,d0
  770.  move.b (a6),d0
  771.  move.b (a4,d0.w*2),(a6)
  772. .dontplotthisoneitsblack:
  773.  adda.w #320,a6
  774.  add.l d2,d6
  775.  addx.w d2,d1
  776.  dbra d4,.drawavertstrip
  777.  move.w (a7)+,d4
  778. blankstripGLARE:
  779.  dbra d3,drawrightsideGLARE
  780.  bra objbehind
  781.  
  782. SecThirdGLARE:
  783.  move.l d5,d1
  784.  move.l d5,d6
  785.  move.w d4,-(a7)
  786. .drawavertstrip
  787.  move.w (a0,d1.w*2),d0
  788.  lsr.w #5,d0
  789.  and.w #%11111,d0
  790.  beq.s .dontplotthisoneitsblack
  791.  lsl.w #8,d0
  792.  move.b (a6),d0
  793.  move.b (a4,d0.w*2),(a6)
  794. .dontplotthisoneitsblack:
  795.  adda.w #320,a6
  796.  add.l d2,d6
  797.  addx.w d2,d1
  798.  dbra d4,.drawavertstrip
  799.  move.w (a7)+,d4
  800.  dbra d3,drawrightsideGLARE
  801.  bra objbehind
  802.  
  803. ThirdThirdGLARE:
  804.  move.l d5,d1
  805.  move.l d5,d6
  806.  move.w d4,-(a7)
  807. .drawavertstrip
  808.  move.b (a0,d1.w*2),d0
  809.  lsr.b #2,d0
  810.  and.b #%11111,d0
  811.  beq.s .dontplotthisoneitsblack
  812.  lsl.w #8,d0
  813.  move.b (a6),d0
  814.  move.b (a4,d0.w*2),(a6)
  815. .dontplotthisoneitsblack:
  816.  adda.w #320,a6
  817.  add.l d2,d6
  818.  addx.w d2,d1
  819.  dbra d4,.drawavertstrip
  820.  move.w (a7)+,d4
  821.  dbra d3,drawrightsideGLARE
  822.  
  823.  movem.l (a7)+,d0-d7/a0-a6
  824.  rts
  825.  
  826.  
  827.  
  828. BitMapObj:
  829.  move.l #0,AUXX
  830.  
  831.  cmp.b #3,16(a0)
  832.  bne.s .NOTAUX
  833.  
  834.  move.w auxxoff(a0),AUXX
  835.  move.w auxyoff(a0),AUXY
  836.   
  837. .NOTAUX:
  838.  
  839.  tst.l 8(a0)
  840.  blt glareobj
  841.  
  842.  move.w Facing(a0),FACINGANG
  843.  
  844.  move.w (a0)+,d0    ;pt num
  845.  
  846.  move.l ObjectPoints,a4
  847.  
  848.  move.w (a4,d0.w*8),thisxpos
  849.  move.w 4(a4,d0.w*8),thiszpos
  850.  
  851.  move.w 2(a1,d0.w*8),d1
  852.  cmp.w #25,d1
  853.  ble objbehind
  854.  
  855.  move.w topclip,d2
  856.  asr.w #1,d2
  857.  move.w botclip,d3
  858.  asr.w #1,d3
  859.  
  860.  move.l ty3d,d6
  861.  sub.l yoff,d6
  862.  divs d1,d6
  863.  add.w d6,d6
  864.  add.w MIDDLEY,d6
  865.  asr.w #1,d6
  866.  cmp.w d3,d6
  867.  bge objbehind
  868.  cmp.w d2,d6
  869.  bge.s .okobtc
  870.  move.w d2,d6
  871. .okobtc:
  872.  move.w d6,objclipt
  873.  
  874.  move.l by3d,d6
  875.  sub.l yoff,d6
  876.  divs d1,d6
  877.  add.w d6,d6
  878.  add.w MIDDLEY,d6
  879.  asr.w #1,d6
  880.  cmp.w d2,d6
  881.  ble objbehind
  882.  cmp.w d3,d6
  883.  ble.s .okobbc
  884.  move.w d3,d6
  885. .okobbc:
  886.  move.w d6,objclipb
  887.  
  888.  move.l 4(a1,d0.w*8),d0
  889.  move.w AUXX,d2
  890.  ext.l d2
  891.  asl.l #7,d2
  892.  add.l d2,d0
  893.  move.w d1,d6
  894.  asr.w #6,d6
  895.  add.w (a0)+,d6
  896.  move.w d6,BRIGHTTOADD
  897.  
  898.  bge.s brighttoonot
  899.  moveq #0,d6
  900. brighttoonot
  901.  sub.l a4,a4
  902.  move.w objscalecols(pc,d6.w*2),a4
  903.  bra pastobjscale
  904.  
  905. objscalecols:
  906.  dcb.w  2,64*0
  907.  dcb.w  4,64*1
  908.  dcb.w  4,64*2
  909.  dcb.w  4,64*3
  910.  dcb.w  4,64*4
  911.  dcb.w  4,64*5
  912.  dcb.w  4,64*6
  913.  dcb.w  4,64*7
  914.  dcb.w  4,64*8
  915.  dcb.w  4,64*9
  916.  dcb.w  4,64*10
  917.  dcb.w  4,64*11
  918.  dcb.w  4,64*12
  919.  dcb.w  4,64*13
  920.  dcb.w  20,64*14
  921.  
  922. WHICHLIGHTPAL: dc.w 0
  923. FLIPIT: dc.w 0
  924. FLIPPEDIT: dc.w 0
  925. LIGHTIT: dc.w 0
  926. ADDITIVE: dc.w 0
  927. BASEPAL: dc.l 0
  928.  
  929. pastobjscale:
  930.  
  931.  move.w (a0)+,d2    ; height
  932.  
  933.  add.w AUXY,d2
  934.  ext.l d2
  935.  asl.l #7,d2
  936.  sub.l yoff,d2
  937.  divs d1,d2    
  938.  add.w d2,d2
  939.  add.w MIDDLEY,d2
  940.  asr.w #1,d2
  941.  
  942.  divs d1,d0
  943.  add.w d0,d0
  944.  add.w MIDDLEX,d0    ;x pos of middle
  945.  asr.w #1,d0
  946.  
  947. ; Need to calculate:
  948. ; Width of object in pixels
  949. ; height of object in pixels
  950. ; horizontal constants
  951. ; vertical constants.
  952.  
  953.  move.l LINKFILE,a6
  954.  lea FrameData(a6),a6
  955.  move.l #Objects,a5
  956.  move.w 2(a0),d7
  957.  asl.w #4,d7
  958.  adda.w d7,a5
  959.  asl.w #4,d7
  960.  adda.w d7,a6
  961.  
  962.  clr.b LIGHTIT
  963.  clr.b ADDITIVE
  964.  move.b 4(a0),d7
  965.  btst #7,d7
  966.  sne FLIPIT
  967.  and.b #127,d7
  968.  sub.b #2,d7
  969.  blt.s .NOTALIGHT
  970.  
  971.  cmp.b #4,d7
  972.  blt.s .isalight
  973.  
  974.  st ADDITIVE
  975.  bra.s .NOTALIGHT
  976. .isalight:
  977.  
  978.  st LIGHTIT
  979.  move.b d7,WHICHLIGHTPAL
  980.  
  981. .NOTALIGHT:
  982.  
  983.  moveq #0,d7
  984.  move.b 5(a0),d7
  985.  lea (a6,d7.w*8),a6
  986.  
  987.  move.l #consttab,a3
  988.  
  989.  moveq #0,d3
  990.  moveq #0,d4
  991.  move.b (a0)+,d3
  992.  move.b (a0)+,d4
  993.  lsl.l #7,d3
  994.  lsl.l #7,d4
  995.  divs d1,d3 ;width in pixels
  996.  divs d1,d4 ;height in pixels
  997.  
  998.  sub.w d4,d2
  999.  sub.w d3,d0
  1000.  cmp.w rightclipb,d0
  1001.  bge objbehind
  1002.  add.w d3,d3
  1003.  cmp.w objclipb,d2
  1004.  bge objbehind
  1005.  
  1006.  add.w d4,d4
  1007.  
  1008. * OBTAIN POINTERS TO HORIZ AND VERT
  1009. * CONSTANTS FOR MOVING ACROSS AND
  1010. * DOWN THE OBJECT GRAPHIC.
  1011.  
  1012.  move.l (a5)+,WAD_PTR
  1013.  move.l (a5)+,PTR_PTR
  1014.  add.l 4(a5),a4
  1015.  move.l 4(a5),BASEPAL
  1016.  
  1017.  move.l (a6),d7
  1018.  move.w d7,DOWN_STRIP
  1019.  move.l PTR_PTR,a5
  1020.  
  1021.  tst.b FLIPIT
  1022.  beq.s .nfl1
  1023.  
  1024.  move.w 4(a6),d6
  1025.  add.w d6,d6
  1026.  subq #1,d6
  1027.  lea (a5,d6.w*4),a5
  1028.  
  1029. .nfl1:
  1030.  swap d7
  1031.  asl.w #2,d7
  1032.  adda.w d7,a5
  1033. fl1:
  1034.  
  1035.  move.w d1,d7
  1036.  moveq #0,d6
  1037.  move.w 4(a6),d6
  1038.  add.w d6,d6
  1039.  subq #1,d6
  1040.  mulu d6,d7
  1041.  moveq #0,d6
  1042.  move.b -2(a0),d6
  1043.  beq objbehind
  1044.  divu d6,d7
  1045.  swap d7
  1046.  clr.w d7
  1047.  swap d7
  1048.  lea (a3,d7.l*8),a2    ; pointer to
  1049.             ; horiz const
  1050.  move.w d1,d7
  1051.  move.w 6(a6),d6
  1052.  add.w d6,d6
  1053.  subq #1,d6
  1054.  mulu d6,d7
  1055.  moveq #0,d6
  1056.  move.b -1(a0),d6
  1057.  beq objbehind
  1058.  divu d6,d7
  1059.  swap d7
  1060.  clr.w d7
  1061.  swap d7
  1062.  lea (a3,d7.l*8),a3    ; pointer to
  1063.              ; vertical c.
  1064.  
  1065. * CLIP OBJECT TO TOP AND BOTTOM
  1066. * OF THE VISIBLE DISPLAY
  1067.  
  1068.  moveq #0,d7
  1069.  cmp.w objclipt,d2
  1070.  bge.s objfitsontop
  1071.  
  1072.  sub.w objclipt,d2
  1073.  add.w d2,d4    ;new height in
  1074.         ;pixels
  1075.  ble objbehind  ; nothing to draw
  1076.  
  1077.  move.w d2,d7
  1078.  neg.w d7    ; factor to mult.
  1079.          ; constants by
  1080.          ; at top of obj.
  1081.  move.w objclipt,d2
  1082.  
  1083. objfitsontop:
  1084.  
  1085.  move.w objclipb,d6
  1086.  sub.w d2,d6
  1087.  cmp.w d6,d4
  1088.  ble.s objfitsonbot
  1089.  
  1090.  move.w d6,d4
  1091.  
  1092. objfitsonbot:
  1093.  
  1094.  subq #1,d4
  1095.  blt objbehind
  1096.  
  1097.  move.l #ontoscr,a6
  1098.  move.l (a6,d2.w*4),d2
  1099.  add.l frompt,d2
  1100.  move.l d2,toppt
  1101.  
  1102.  cmp.w leftclipb,d0
  1103.  bge.s okonleft
  1104.  
  1105.  sub.w leftclipb,d0
  1106.  add.w d0,d3
  1107.  ble objbehind
  1108.  
  1109.  move.w (a2),d1
  1110.  move.w 2(a2),d2
  1111.  neg.w d0
  1112.  muls d0,d1
  1113.  mulu d0,d2
  1114.  swap d2
  1115.  add.w d2,d1
  1116.  move.w leftclipb,d0
  1117.  
  1118.  asl.w #2,d1
  1119.  tst.b FLIPIT
  1120.  beq.s .nfl2
  1121.  
  1122.  suba.w d1,a5
  1123.  suba.w d1,a5
  1124.  
  1125. .nfl2:
  1126.  
  1127.  adda.w d1,a5 
  1128.  
  1129. okonleft:
  1130.  
  1131.  move.w d0,d6
  1132.  add.w d3,d6
  1133.  sub.w rightclipb,d6
  1134.  blt.s okrightside
  1135.  
  1136.  sub.w #1,d3
  1137.  sub.w d6,d3
  1138.  
  1139. okrightside:
  1140.  
  1141.  move.l #objintocop,a1
  1142.  lea (a1,d0.w*2),a1
  1143. ; ext.l d0
  1144. ; add.l d0,toppt
  1145.  
  1146.  move.w (a3),d5
  1147.  move.w 2(a3),d6
  1148.  muls d7,d5
  1149.  mulu d7,d6
  1150.  swap d6
  1151.  add.w d6,d5
  1152.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  1153.          ;top offset into
  1154.          ;each strip.
  1155.  add.l #$80000000,d5
  1156.      
  1157.  move.l (a2),d7
  1158.  tst.b FLIPIT
  1159.  beq.s .nfl3
  1160.  neg.l d7
  1161. .nfl3:
  1162.  move.l d7,a2
  1163.  moveq.l #0,d7
  1164.  move.l a5,midobj
  1165.  move.l (a3),d2
  1166.  swap d2
  1167.  
  1168. ; move.l #0,a1
  1169.  
  1170.  tst.b LIGHTIT
  1171.  bne DRAWITLIGHTED
  1172.  
  1173.  tst.b ADDITIVE
  1174.  bne DRAWITADDED
  1175.  
  1176. drawrightside:
  1177.  swap d7
  1178.  move.l midobj(pc),a5
  1179.  lea (a5,d7.w*4),a5
  1180.  swap d7
  1181.  add.l a2,d7
  1182.  move.l WAD_PTR(PC),a0
  1183.  
  1184.  move.l toppt(pc),a6
  1185.  adda.w (a1)+,a6
  1186. ; addq #1,a1
  1187.  move.l (a5),d1
  1188.  beq blankstrip
  1189.  
  1190.  and.l #$ffffff,d1
  1191.  add.l d1,a0
  1192.  
  1193.  move.b (a5),d1
  1194.  cmp.b #1,d1
  1195.  bgt.s ThirdThird
  1196.  beq.s SecThird
  1197.  move.l d5,d6
  1198.  move.l d5,d1
  1199.  move.w d4,-(a7)
  1200. .drawavertstrip
  1201.  move.b 1(a0,d1.w*2),d0
  1202.  and.b #%00011111,d0
  1203.  beq.s .dontplotthisoneitsblack
  1204.  move.w (a4,d0.w*2),(a6)
  1205. .dontplotthisoneitsblack:
  1206.  adda.w #104*4,a6
  1207.  add.l d2,d6
  1208.  addx.w d2,d1
  1209.  dbra d4,.drawavertstrip
  1210.  move.w (a7)+,d4
  1211. blankstrip:
  1212.  dbra d3,drawrightside
  1213.  bra.s objbehind
  1214.  
  1215. SecThird:
  1216.  move.l d5,d1
  1217.  move.l d5,d6
  1218.  move.w d4,-(a7)
  1219. .drawavertstrip
  1220.  move.w (a0,d1.w*2),d0
  1221.  lsr.w #5,d0
  1222.  and.w #%11111,d0
  1223.  beq.s .dontplotthisoneitsblack
  1224.  move.w (a4,d0.w*2),(a6)
  1225. .dontplotthisoneitsblack:
  1226.  adda.w #104*4,a6
  1227.  add.l d2,d6
  1228.  addx.w d2,d1
  1229.  dbra d4,.drawavertstrip
  1230.  move.w (a7)+,d4
  1231.  dbra d3,drawrightside
  1232.  bra.s objbehind
  1233.  
  1234. ThirdThird:
  1235.  move.l d5,d1
  1236.  move.l d5,d6
  1237.  move.w d4,-(a7)
  1238. .drawavertstrip
  1239.  move.b (a0,d1.w*2),d0
  1240.  lsr.b #2,d0
  1241.  and.b #%11111,d0
  1242.  beq.s .dontplotthisoneitsblack
  1243.  move.w (a4,d0.w*2),(a6)
  1244. .dontplotthisoneitsblack:
  1245.  adda.w #104*4,a6
  1246.  add.l d2,d6
  1247.  addx.w d2,d1
  1248.  dbra d4,.drawavertstrip
  1249.  move.w (a7)+,d4
  1250.  dbra d3,drawrightside
  1251.  
  1252. objbehind:
  1253.  movem.l (a7)+,d0-d7/a0-a6
  1254.  rts
  1255.  
  1256. DRAWITADDED:
  1257.  move.l BASEPAL,a4
  1258.  
  1259. drawrightsideADD:
  1260.  swap d7
  1261.  move.l midobj(pc),a5
  1262.  lea (a5,d7.w*4),a5
  1263.  swap d7
  1264.  add.l a2,d7
  1265.  move.l WAD_PTR(PC),a0
  1266.  
  1267.  move.l toppt(pc),a6
  1268.  adda.w a1,a6
  1269.  addq #1,a1
  1270.  move.l (a5),d1
  1271.  beq blankstripADD
  1272.  
  1273.  and.l #$ffffff,d1
  1274.  add.l d1,a0
  1275.  
  1276.  move.b (a5),d1
  1277.  cmp.b #1,d1
  1278.  bgt.s ThirdThirdADD
  1279.  beq.s SecThirdADD
  1280.  move.l d5,d6
  1281.  move.l d5,d1
  1282.  move.w d4,-(a7)
  1283. .drawavertstrip
  1284.  move.b 1(a0,d1.w*2),d0
  1285.  and.b #%00011111,d0
  1286.  lsl.w #8,d0
  1287.  move.b (a6),d0
  1288.  move.b (a4,d0.w),(a6)
  1289.  adda.w #320,a6
  1290.  add.l d2,d6
  1291.  addx.w d2,d1
  1292.  dbra d4,.drawavertstrip
  1293.  move.w (a7)+,d4
  1294. blankstripADD:
  1295.  dbra d3,drawrightsideADD
  1296.  bra objbehind
  1297.  
  1298. SecThirdADD:
  1299.  move.l d5,d1
  1300.  move.l d5,d6
  1301.  move.w d4,-(a7)
  1302. .drawavertstrip
  1303.  move.w (a0,d1.w*2),d0
  1304.  lsr.w #5,d0
  1305.  and.w #%11111,d0
  1306.  lsl.w #8,d0
  1307.  move.b (a6),d0
  1308.  move.b (a4,d0.w),(a6)
  1309.  adda.w #320,a6
  1310.  add.l d2,d6
  1311.  addx.w d2,d1
  1312.  dbra d4,.drawavertstrip
  1313.  move.w (a7)+,d4
  1314.  dbra d3,drawrightsideADD
  1315.  bra objbehind
  1316.  
  1317. ThirdThirdADD:
  1318.  move.l d5,d1
  1319.  move.l d5,d6
  1320.  move.w d4,-(a7)
  1321. .drawavertstrip
  1322.  move.b (a0,d1.w*2),d0
  1323.  lsr.b #2,d0
  1324.  and.b #%11111,d0
  1325.  lsl.w #8,d0
  1326.  move.b (a6),d0
  1327.  move.b (a4,d0.w),(a6)
  1328. .dontplotthisoneitsblack:
  1329.  adda.w #320,a6
  1330.  add.l d2,d6
  1331.  addx.w d2,d1
  1332.  dbra d4,.drawavertstrip
  1333.  move.w (a7)+,d4
  1334.  dbra d3,drawrightsideADD
  1335.  
  1336.  bra objbehind
  1337.  
  1338. DRAWITLIGHTED:
  1339.  
  1340. ; Make up lighting values
  1341.  
  1342.  movem.l d0-d7/a0-a6,-(a7)
  1343.  
  1344.  move.l #ANGLEBRIGHTS,a2
  1345.  move.l #$80808080,(a2)
  1346.  move.l #$80808080,4(a2)
  1347.  move.l #$80808080,8(a2)
  1348.  move.l #$80808080,12(a2)
  1349.  move.l #$80808080,16(a2)
  1350.  move.l #$80808080,20(a2)
  1351.  move.l #$80808080,24(a2)
  1352.  move.l #$80808080,28(a2)
  1353.  
  1354.  move.l #$80808080,32(a2)
  1355.  move.l #$80808080,36(a2)
  1356.  move.l #$80808080,40(a2)
  1357.  move.l #$80808080,44(a2)
  1358.  move.l #$80808080,48(a2)
  1359.  move.l #$80808080,52(a2)
  1360.  move.l #$80808080,56(a2)
  1361.  move.l #$80808080,60(a2)
  1362.  
  1363.  move.w currzone(pc),d0
  1364.  bsr CALCBRIGHTSINZONE
  1365.  
  1366.  move.l #ANGLEBRIGHTS+32,a2
  1367.  
  1368. ; Now do the brightnesses of surrounding
  1369. ; zones:
  1370.  
  1371. ; move.l FloorLines,a1
  1372. ; move.w currzone,d0
  1373. ; move.l ZoneAdds,a4
  1374. ; move.l (a4,d0.w*4),a4
  1375. ; add.l LEVELDATA,a4
  1376. ; move.l a4,a5
  1377. ; adda.w ToExitList(a4),a5
  1378. ;.doallwalls
  1379. ; move.w (a5)+,d0
  1380. ; blt .nomorewalls
  1381. ;
  1382. ; asl.w #4,d0
  1383. ; lea (a1,d0.w),a3
  1384. ; move.w 8(a3),d0
  1385. ; blt.s .solidwall ; a wall not an exit.
  1386. ; movem.l a1/a4/a5,-(a7) 
  1387. ; bsr CALCBRIGHTSINZONE
  1388. ; movem.l (a7)+,a1/a4/a5
  1389. ; bra .doallwalls
  1390. ;
  1391. ;.solidwall:
  1392. ; move.w 4(a3),d1
  1393. ; move.w 6(a3),d2
  1394. ; move.w oldx,newx
  1395. ; move.w oldz,newz
  1396. ; sub.w d2,newx
  1397. ; add.w d1,newz
  1398. ;
  1399. ; movem.l d0-d7/a0-a6,-(a7)
  1400. ; jsr HeadTowardsAng
  1401. ; movem.l (a7)+,d0-d7/a0-a6
  1402. ; move.w AngRet,d1
  1403. ; neg.w d1
  1404. ; and.w #8191,d1
  1405. ; asr.w #8,d1
  1406. ; asr.w #1,d1
  1407.  
  1408. ; move.b #48,(a2,d1.w)
  1409. ; move.b #48,16(a2,d1.w)
  1410. ; bra .doallwalls 
  1411. ;
  1412. ;.nomorewalls:
  1413.  
  1414.  move.l #xzangs,a0
  1415.  move.l #ANGLEBRIGHTS,a1
  1416.  move.w #15,d7
  1417.  sub.l a2,a2
  1418.  sub.l a3,a3
  1419.  sub.l a4,a4
  1420.  sub.l a5,a5
  1421.  moveq #00,d0
  1422.  moveq #00,d1
  1423. averageangle:
  1424.  
  1425.  moveq #0,d4
  1426.  move.b 16(a1),d4
  1427.  cmp.b #$80,d4
  1428.  beq.s .nobright
  1429.  
  1430.  neg.w d4
  1431.  add.w #48,d4
  1432.  cmp.b d1,d4
  1433.  ble.s .nobrightest
  1434.  move.b d4,d1
  1435. .nobrightest:
  1436.  
  1437.  
  1438.  move.w (a0),d5
  1439.  move.w 2(a0),d6
  1440.  muls d4,d5
  1441.  muls d4,d6
  1442.  add.l d5,a2
  1443.  add.l d6,a3
  1444.  
  1445. .nobright:
  1446.  
  1447. BOTTYL:
  1448.  
  1449.  moveq #0,d4
  1450.  move.b (a1),d4
  1451.  cmp.b #$80,d4
  1452.  beq.s .nobright 
  1453.  neg.w d4
  1454.  add.w #48,d4
  1455.  cmp.b d0,d4
  1456.  blt.s .nobrightest
  1457.  move.b d4,d0
  1458. .nobrightest:
  1459.  
  1460.  move.w (a0),d5
  1461.  move.w 2(a0),d6
  1462.  muls d4,d5
  1463.  muls d4,d6
  1464.  add.l d5,a4
  1465.  add.l d6,a5
  1466.  
  1467. .nobright:
  1468.  addq #4,a0
  1469.  addq #1,a1
  1470.  
  1471.  dbra d7,averageangle
  1472.  
  1473.  move.l a2,d2
  1474.  move.l a3,d3
  1475.  move.l a4,d4
  1476.  move.l a5,d5
  1477.  
  1478.  add.l d2,d4
  1479.  add.l d3,d5    ; bright dir.
  1480.  
  1481.  bsr FINDROUGHANG
  1482.  
  1483. foundang:
  1484.  
  1485.  move.w #7,d2
  1486.  move.w d1,d3 
  1487.  cmp.w d0,d1
  1488.  beq.s INMIDDLE
  1489.  bgt.s .okpicked
  1490.  move.w d0,d3
  1491. .okpicked
  1492.  
  1493.  move.w d0,d2
  1494.  add.w d1,d2    ; total brightness
  1495.  
  1496.  muls #16,d1
  1497.  subq #1,d1
  1498.  divs d2,d1
  1499.  move.w d1,d2
  1500.  
  1501. INMIDDLE:
  1502.  ; d2=y distance from middle of brightest pt.
  1503.  ; d3=brightness
  1504.  neg.w d3
  1505.  add.w #48,d3
  1506.  
  1507.  move.l #willy,a0
  1508.  move.l #guff,a1
  1509.  add.l guffptr,a1
  1510. ; add.l #16*7,guffptr
  1511. ; cmp.l #16*7*15,guffptr
  1512. ; ble.s .noreguff
  1513. ; move.l #0,guffptr
  1514. ;.noreguff:
  1515.  
  1516.  muls #7*16,d2
  1517.  add.l d2,a1
  1518.  
  1519.  move.w p1_angpos,d0
  1520.  neg.w d0
  1521.  add.w #4096,d0
  1522.  and.w #8191,d0
  1523.  asr.w #8,d0
  1524.  asr.w #1,d0
  1525.  
  1526.  sub.b #3,d0
  1527.  add.b d4,d0
  1528.  and.w #15,d0
  1529.  move.w #6,d1
  1530. .across:
  1531.  move.w #6,d2
  1532.  move.w d0,d5
  1533. .down
  1534.  move.b (a1,d5),d4
  1535.  add.b d3,d4
  1536.  ext.w d4
  1537.  move.w d4,(a0)+
  1538.  addq #1,d5
  1539.  and.w #15,d5
  1540.  dbra d2,.down
  1541.  add.w #16,a1
  1542.  dbra d1,.across
  1543.  
  1544. ; jsr CALCBRIGHTRINGS
  1545.  
  1546. ; Need to scan around zone points putting in
  1547. ; brightnesses.
  1548.  
  1549.  
  1550. ; move.w PLR1_xoff,newx
  1551. ; move.w PLR1_zoff,newz
  1552. ; move.w thisxpos,oldx
  1553. ; move.w thiszpos,oldz
  1554. ; movem.l d0-d7/a0-a6,-(a7)
  1555. ; jsr HeadTowardsAng
  1556. ; movem.l (a7)+,d0-d7/a0-a6
  1557.  
  1558.  
  1559. ; move.w #0,d0
  1560. ; move.w AngRet,d0
  1561. ; move.w p1_angpos,d0
  1562. ; neg.w d0
  1563. ; add.w #4096,d0
  1564. ; and.w #8191,d0
  1565. ; asr.w #8,d0
  1566. ; asr.w #1,d0
  1567. ; sub.b #6,d0
  1568. ; and.b #15,d0
  1569. ; move.l #ANGLEBRIGHTS,a1
  1570. ; move.l #willy,a0
  1571. ; moveq #6,d1
  1572. ;.across:
  1573. ; moveq #0,d3
  1574. ; moveq #0,d4
  1575. ; move.b (a1,d0.w),d4
  1576. ; bge.s .okp1
  1577. ; moveq #0,d4
  1578. ;.okp1
  1579. ; move.b 16(a1,d0.w),d3
  1580. ; bge.s .okp2
  1581. ; moveq #0,d3
  1582. ;.okp2
  1583. ; sub.w d3,d4
  1584. ; swap d3
  1585. ; swap d4
  1586. ; divs.l #7,d4
  1587. ; moveq #6,d2
  1588. ; moveq #0,d5
  1589. ;.down:
  1590. ; swap d3
  1591. ; move.w d3,(a0,d5.w*2)
  1592. ; swap d3
  1593. ; addq #7,d5
  1594. ; add.l d4,d3
  1595. ; dbra d2,.down
  1596. ; addq #2,d0
  1597. ; and.w #15,d0
  1598. ; addq #2,a0
  1599. ; dbra d1,.across
  1600.  
  1601.  
  1602.  move.w BRIGHTTOADD,d0
  1603.  move.l #willy,a0
  1604.  move.l #willybright,a1
  1605.  move.w #48,d1
  1606. ADDITIN:
  1607.  
  1608.  move.w d0,d2
  1609.  add.w (a1)+,d2
  1610.  ble.s .nopos
  1611.  
  1612.  moveq #0,d2
  1613.  
  1614. .nopos:
  1615.  
  1616.  add.w d2,(a0)+
  1617.  
  1618.  dbra d1,ADDITIN
  1619.  
  1620.  
  1621.  
  1622.  tst.b FLIPIT
  1623.  beq.s LEFTTORIGHT
  1624.  
  1625.  move.l #Brights2,a0
  1626.  bra DONERIGHTTOLEFT
  1627.  
  1628. LEFTTORIGHT:
  1629.  
  1630.  move.l #Brights,a0
  1631. DONERIGHTTOLEFT:
  1632.  move.l #willy,a2
  1633.  move.l BASEPAL,a1
  1634.  move.b WHICHLIGHTPAL,d0
  1635.  asl.w #8,d0
  1636.  add.w d0,a1 
  1637.  move.l #PALS,a3
  1638.  move.w #28,d0
  1639. makepals:
  1640.  
  1641.  move.w (a0)+,d1
  1642.  move.w (a2,d1.w*2),d1
  1643.  bge.s .okpos
  1644.  moveq #0,d1
  1645. .okpos: 
  1646.  cmp.w #31,d1
  1647.  blt.s .okneg
  1648.  move.w #31,d1
  1649. .okneg:
  1650.  
  1651.  move.l (a1,d1.w*8),(a3)+
  1652.  move.b #0,-4(a3)
  1653.  move.l 4(a1,d1.w*8),(a3)+
  1654.  
  1655.  dbra d0,makepals
  1656.  
  1657.  movem.l (a7)+,d0-d7/a0-a6
  1658.  
  1659.  move.l #PALS,a4
  1660.  
  1661. drawlightlop
  1662.  swap d7
  1663.  move.l midobj(pc),a5
  1664.  lea (a5,d7.w*4),a5
  1665.  swap d7
  1666.  add.l a2,d7
  1667.  move.l WAD_PTR(PC),a0
  1668.  
  1669.  move.l toppt(pc),a6
  1670.  adda.w a1,a6
  1671.  addq #1,a1
  1672.  move.l (a5),d1
  1673.  beq .blankstrip
  1674.  
  1675.  add.l d1,a0
  1676.  
  1677.  move.l d5,d6
  1678.  move.l d5,d1
  1679.  move.w d4,-(a7)
  1680. .drawavertstrip
  1681.  move.b (a0,d1.w),d0
  1682.  beq.s .dontplotthisoneitsblack
  1683.  move.b (a4,d0.w),(a6)
  1684. .dontplotthisoneitsblack:
  1685.  adda.w #320,a6
  1686.  add.l d2,d6
  1687.  addx.w d2,d1
  1688.  dbra d4,.drawavertstrip
  1689.  move.w (a7)+,d4
  1690. .blankstrip:
  1691.  dbra d3,drawlightlop
  1692.  bra objbehind
  1693.  
  1694. *********************************************
  1695. FINDROUGHANG:
  1696.  neg.l d5
  1697.  moveq #0,d7
  1698.  tst.l d4
  1699.  bge.s .no8
  1700.  add.w #8,d7
  1701.  neg.l d4
  1702. .no8
  1703.  tst.l d5
  1704.  bge.s .no4
  1705.  neg.l d5
  1706.  add.w #4,d7
  1707. .no4
  1708.  cmp.l d5,d4
  1709.  bge.s .no2
  1710.  addq #2,d7
  1711.  exg d4,d5
  1712. .no2:
  1713.  asr.l #1,d4
  1714.  cmp.l d5,d4
  1715.  bge.s .no1
  1716.  addq #1,d7
  1717. .no1
  1718.  
  1719.  move.w maptoang(pc,d7.w*2),d4    ; retun angle
  1720.  rts
  1721.  
  1722. maptoang:
  1723.  dc.w 3,2,0,1,4,5,7,6
  1724.  dc.w 12,13,15,14,11,10,8,9
  1725.  
  1726. guffptr: dc.l 0
  1727.  
  1728. *********************************************
  1729. CALCBRIGHTRINGS:
  1730.  move.l #ANGLEBRIGHTS,a2
  1731.  move.l #$80808080,(a2)
  1732.  move.l #$80808080,4(a2)
  1733.  move.l #$80808080,8(a2)
  1734.  move.l #$80808080,12(a2)
  1735.  move.l #$80808080,16(a2)
  1736.  move.l #$80808080,20(a2)
  1737.  move.l #$80808080,24(a2)
  1738.  move.l #$80808080,28(a2)
  1739.  
  1740.  move.l #$80808080,32(a2)
  1741.  move.l #$80808080,36(a2)
  1742.  move.l #$80808080,40(a2)
  1743.  move.l #$80808080,44(a2)
  1744.  move.l #$80808080,48(a2)
  1745.  move.l #$80808080,52(a2)
  1746.  move.l #$80808080,56(a2)
  1747.  move.l #$80808080,60(a2)
  1748.  
  1749.  move.w currzone(pc),d0
  1750.  bsr CALCBRIGHTSINZONE
  1751.  
  1752.  move.l #ANGLEBRIGHTS+32,a2
  1753.  
  1754. ; Now do the brightnesses of surrounding
  1755. ; zones:
  1756.  
  1757.  move.l FloorLines,a1
  1758.  move.w currzone,d0
  1759.  move.l ZoneAdds,a4
  1760.  move.l (a4,d0.w*4),a4
  1761.  add.l LEVELDATA,a4
  1762.  move.l a4,a5
  1763.  
  1764.  adda.w ToExitList(a4),a5
  1765.  
  1766. .doallwalls
  1767.  move.w (a5)+,d0
  1768.  blt .nomorewalls
  1769.  
  1770.  asl.w #4,d0
  1771.  lea (a1,d0.w),a3
  1772.  
  1773.  move.w 8(a3),d0
  1774.  blt.s .solidwall ; a wall not an exit.
  1775.  
  1776.  movem.l a1/a4/a5,-(a7) 
  1777.  bsr CALCBRIGHTSINZONE
  1778.  movem.l (a7)+,a1/a4/a5
  1779.  bra .doallwalls
  1780.  
  1781. .solidwall:
  1782.  move.w 4(a3),d1
  1783.  move.w 6(a3),d2
  1784.  
  1785.  move.w oldx,newx
  1786.  move.w oldz,newz
  1787.  sub.w d2,newx
  1788.  add.w d1,newz
  1789.  
  1790.  movem.l d0-d7/a0-a6,-(a7)
  1791.  jsr HeadTowardsAng
  1792.  movem.l (a7)+,d0-d7/a0-a6
  1793.  move.w AngRet,d1
  1794.  neg.w d1
  1795.  and.w #8191,d1
  1796.  asr.w #8,d1
  1797.  asr.w #1,d1
  1798.  
  1799.  move.b #48,(a2,d1.w)
  1800.  move.b #48,16(a2,d1.w)
  1801.  bra .doallwalls 
  1802.  
  1803. .nomorewalls:
  1804.  
  1805.  
  1806. ; move.b #0,(a2)
  1807. ; move.b #20,8(a2)
  1808. ; move.b #0,16(a2)
  1809. ; move.b #20,24(a2)
  1810.  
  1811.  move.l #ANGLEBRIGHTS,a0
  1812.  bsr TWEENBRIGHTS
  1813.  move.l #ANGLEBRIGHTS+16,a0
  1814.  bsr TWEENBRIGHTS
  1815.  move.l #ANGLEBRIGHTS+32,a0
  1816.  bsr TWEENBRIGHTS
  1817.  move.l #ANGLEBRIGHTS+48,a0
  1818.  bsr TWEENBRIGHTS
  1819.  
  1820.  move.l #ANGLEBRIGHTS,a0
  1821.  move.b #15,d0
  1822. ADDBRIGHTS
  1823.  
  1824.  moveq #0,d3
  1825.  moveq #0,d4
  1826.  move.b 32(a0),d3
  1827.  move.b 48(a0),d4
  1828.  neg.w d3
  1829.  add.w #48,d3
  1830.  neg.w d4
  1831.  add.w #48,d4
  1832.  asr.w #1,d4
  1833.  asr.w #1,d3
  1834.  
  1835.  move.b 16(a0),d5
  1836.  sub.b d5,d4
  1837.  ble.s .ok2
  1838.  moveq #0,d4
  1839. .ok2:
  1840.  move.b (a0),d5
  1841.  sub.b d5,d3
  1842.  ble.s .ok1
  1843.  moveq #0,d3
  1844. .ok1:
  1845.  neg.b d3
  1846.  neg.b d4
  1847.  
  1848.  move.b d4,16(a0)
  1849.  move.b d3,(a0)+ 
  1850.  
  1851.  dbra d0,ADDBRIGHTS
  1852.  
  1853.  rts
  1854.  
  1855. **********************************************
  1856.  
  1857. TWEENBRIGHTS:
  1858.  
  1859.  moveq #0,d0
  1860. .backinto:
  1861.  cmp.b #-128,(a0,d0.w)
  1862.  bne.s .okbr
  1863.  addq #1,d0
  1864.  bra.s .backinto
  1865.  
  1866. .okbr:
  1867.  
  1868.  move.b d0,d7 ;starting pos
  1869.  move.b d0,d1 ;previous pos
  1870.  
  1871. ; tween to next value
  1872. .findnext
  1873.  addq #1,d0
  1874.  and.w #15,d0
  1875.  cmp.b #-128,(a0,d0.w)
  1876.  beq.s .findnext
  1877.  
  1878.  moveq #0,d2
  1879.  moveq #0,d3
  1880.  move.b (a0,d1.w),d2
  1881.  move.b (a0,d0.w),d3
  1882.  sub.w d2,d3
  1883.  
  1884.  move.w d0,d4
  1885.  sub.w d1,d4
  1886.  bgt.s .okpos
  1887.  add.w #16,d4
  1888. .okpos:
  1889.  
  1890.  swap d2
  1891.  swap d3
  1892.  ext.l d4
  1893.  divs.l d4,d3
  1894.  
  1895.  subq #1,d4 ; number of tweens
  1896.  
  1897. .putintween
  1898.  swap d2
  1899.  move.b d2,(a0,d1.w)
  1900.  swap d2
  1901.  add.l d3,d2
  1902.  addq #1,d1
  1903.  and.w #15,d1
  1904.  dbra d4,.putintween
  1905.  
  1906.  cmp.b d0,d7
  1907.  beq.s .doneall
  1908.  
  1909.  move.w d0,d1
  1910.  bra .findnext
  1911.  
  1912. .doneall
  1913.  
  1914.  rts
  1915.  
  1916. IMINTHETOPDAD: dc.w 0
  1917.  
  1918. *************************************
  1919. CALCBRIGHTSINZONE:
  1920.  move.w d0,d1
  1921.  muls #20,d1
  1922.  move.l ZoneBorderPts,a1
  1923.  add.l d1,a1
  1924.  move.l #CurrentPointBrights,a0
  1925.  lea (a0,d1.l*4),a0
  1926.  
  1927.  tst.b IMINTHETOPDAD
  1928.  beq.s .notintopdad
  1929.  adda.w #4,a0
  1930. .notintopdad
  1931.  
  1932. ; A0 points at the brightnesses of the zone points.
  1933. ; a1 points at the border points of the zone.
  1934. ; list is terminated with -1.
  1935.  
  1936.  move.l Points,a3
  1937.  
  1938.  move.w thisxpos,oldx
  1939.  move.w thiszpos,oldz
  1940.  move.w #10,speed
  1941.  move.w #0,Range
  1942.  
  1943. DOPTBR
  1944.  move.w (a1)+,d0    ;pt number
  1945.  blt DONEPTBR
  1946.  
  1947.  move.w (a3,d0.w*4),newx
  1948.  move.w 2(a3,d0.w*4),newz
  1949.  
  1950.  movem.l d0-d7/a0-a6,-(a7)
  1951.  jsr HeadTowardsAng
  1952.  movem.l (a7)+,d0-d7/a0-a6
  1953.  
  1954.  move.w AngRet,d1
  1955.  neg.w d1
  1956.  and.w #8191,d1
  1957.  asr.w #8,d1
  1958.  asr.w #1,d1
  1959.  
  1960.  move.w (a0),d0
  1961.  bge.s .okpos
  1962.  add.w #332,d0
  1963.  asr.w #2,d0
  1964.  neg.w d0
  1965.  add.w #332,d0
  1966.  
  1967. .okpos
  1968.  sub.w #300,d0
  1969.  bge.s .okpos3
  1970.  move.w #0,d0
  1971. .okpos3:
  1972.  move.b d0,d2
  1973.  asr.b #1,d2
  1974.  add.b d2,d0
  1975.  move.b d0,(a2,d1.w)
  1976.  move.w 2(a0),d0
  1977.  bge.s .okpos2
  1978.  add.w #332,d0
  1979.  asr.w #2,d0
  1980.  neg.w d0
  1981.  add.w #332,d0
  1982. .okpos2
  1983.  sub.w #300,d0
  1984.  bge.s .okpos4
  1985.  move.w #0,d0
  1986. .okpos4:
  1987.  
  1988.  move.b d0,d2
  1989.  asr.b #1,d2
  1990.  add.b d2,d0
  1991.  move.b d0,16(a2,d1.w)
  1992.  adda.w #8,a0
  1993.  
  1994.  bra DOPTBR
  1995. DONEPTBR
  1996.  rts
  1997.  
  1998. thisxpos: dc.w 0
  1999. thiszpos: dc.w 0
  2000. FACINGANG: dc.w 0
  2001.  
  2002. ANGLEBRIGHTS: ds.l 8*2
  2003.  
  2004. Brights:
  2005.  dc.w 3
  2006.  dc.w 8,9,10,11,12
  2007.  dc.w 15,16,17,18,19
  2008.  dc.w 21,22,23,24,25,26,27
  2009.  dc.w 29,30,31,32,33
  2010.  dc.w 36,37,38,39,40
  2011.  dc.w 45
  2012.  
  2013. Brights2:
  2014.  dc.w 3
  2015.  dc.w 12,11,10,9,8
  2016.  dc.w 19,18,17,16,15
  2017.  dc.w 27,26,25,24,23,22,21
  2018.  dc.w 33,32,31,30,29
  2019.  dc.w 40,39,38,37,36
  2020.  dc.w 45
  2021.  
  2022.  
  2023. PALS:
  2024.  ds.l 2*49
  2025.  
  2026. willy:
  2027.  dc.w 0,0,0,0,0,0,0
  2028.  dc.w 5,5,5,5,5,5,5
  2029.  dc.w 10,10,10,10,10,10,10
  2030.  dc.w 15,15,15,15,15,15,15
  2031.  dc.w 20,20,20,20,20,20,20
  2032.  dc.w 25,25,25,25,25,25,25
  2033.  dc.w 30,30,30,30,30,30,30
  2034.  
  2035. willybright:
  2036.  dc.w 30,30,30,30,30,30,30
  2037.  dc.w 30,20,20,20,20,20,30
  2038.  dc.w 30,20,6,3,6,20,30
  2039.  dc.w 30,20,6,0,6,20,30
  2040.  dc.w 30,20,6,6,6,20,30
  2041.  dc.w 30,20,20,20,20,20,30
  2042.  dc.w 30,30,30,30,30,30,30
  2043.  
  2044. xzangs:
  2045.  dc.w 0,23,10,20,16,16,20,10
  2046.  dc.w 23,0,20,-10,16,-16,10,-20
  2047.  dc.w 0,-23,-10,-20,-16,-16,-20,-10
  2048.  dc.w -23,0,-20,10,-16,16,-10,20
  2049.  
  2050. guff:
  2051.  incbin "ab3:includes/guff"
  2052.  
  2053. midx: dc.w 0
  2054. objpixwidth: dc.w 0
  2055. tmptst: dc.l 0
  2056. toppt: dc.l 0
  2057. doneit: dc.w 0
  2058. replaceend: dc.w 0
  2059. saveend: dc.w 0
  2060. midobj: dc.l 0
  2061. obadd: dc.l 0 
  2062. DOWN_STRIP: dc.w 0
  2063. WAD_PTR: dc.l 0
  2064. PTR_PTR: dc.l 0
  2065.  
  2066. PolyAngPtr: dc.l 0
  2067. PointAngPtr: dc.l 0
  2068.  
  2069.  ds.w 100
  2070. objintocop:
  2071.  incbin "ab3:includes/XTOCOPX"
  2072.  ds.w 100
  2073.  
  2074.    *********************************
  2075. ***************************************
  2076.    ********************************* 
  2077. tstddd: dc.l 0 
  2078.  
  2079. polybehind:
  2080.  rts
  2081.  
  2082. SORTIT: dc.w 0
  2083.  
  2084. objbright:
  2085.  dc.w 0
  2086. ObjAng: dc.w 0
  2087.  
  2088. POLYMIDDLEY: dc.w 0
  2089. OBJONOFF: dc.l 0
  2090.  
  2091. PolygonObj:
  2092.  
  2093. ************************
  2094.  
  2095. ; move.w 4(a0),d0    ; ypos
  2096. ; move.w 2(a0),d1
  2097. ; add.w #2,d1
  2098. ; add.w d1,d0
  2099. ; cmp.w #-48,d0
  2100. ; blt nobounce
  2101. ; neg.w d1
  2102. ; add.w d1,d0
  2103. ;nobounce:
  2104. ; move.w d1,2(a0)
  2105. ; move.w d0,4(a0)
  2106.  
  2107. ; add.w #80*2,boxang
  2108. ; and.w #8191,boxang
  2109.  
  2110. ************************
  2111.  
  2112.  move.w Facing(a0),ObjAng
  2113.  
  2114.  move.w MIDDLEY,POLYMIDDLEY
  2115.  
  2116.  move.w (a0)+,d0
  2117.  move.l ObjectPoints,a4
  2118.  
  2119.  move.w (a4,d0.w*8),thisxpos
  2120.  move.w 4(a4,d0.w*8),thiszpos
  2121.  
  2122.  move.w 2(a1,d0.w*8),d1    ; zpos of mid
  2123.  blt polybehind
  2124.  bgt.s .okinfront
  2125.  
  2126.  move.l a0,a3
  2127.  sub.l PLR1_Obj,a3
  2128.  cmp.l #130,a3
  2129.  bne polybehind
  2130.  
  2131.  move.w #1,d1
  2132.  move.w #80,POLYMIDDLEY
  2133.  tst.b FULLSCR
  2134.  beq.s .okinfront
  2135.  move.w #120,POLYMIDDLEY
  2136. .okinfront:
  2137.  
  2138.  movem.l d0-d7/a0-a6,-(a7)
  2139.  
  2140.  jsr CALCBRIGHTRINGS
  2141.  
  2142.  move.l #ANGLEBRIGHTS,a0
  2143.  move.l #PointAndPolyBrights,a1
  2144.  move.w #15,d7
  2145.  move.w #8,d6
  2146. MYacross:
  2147.  moveq #0,d3
  2148.  moveq #0,d4
  2149.  
  2150.  move.b 16(a0,d6.w),d4
  2151.  bge.s .okp2
  2152.  moveq #0,d4
  2153. .okp2
  2154.  
  2155.  move.b (a0,d6.w),d3
  2156.  bge.s .okp1
  2157.  moveq #0,d3
  2158. .okp1
  2159.  
  2160.  sub.w d3,d4
  2161.  swap d3
  2162.  swap d4
  2163.  divs.l #8,d4
  2164.  moveq #7,d2
  2165.  moveq #3*16,d5
  2166. .down:
  2167.  swap d3
  2168.  move.b d3,(a1,d5.w)
  2169.  swap d3
  2170.  add.w #16,d5
  2171.  add.l d4,d3
  2172.  dbra d2,.down
  2173.  
  2174. TOPPART:
  2175.  
  2176.  moveq #0,d3
  2177.  moveq #0,d4
  2178.  
  2179.  bchg #3,d6
  2180.  
  2181.  move.b (a0,d6.w),d4
  2182.  bge.s .okp2
  2183.  moveq #0,d4
  2184. .okp2
  2185.  
  2186.  bchg #3,d6
  2187.  
  2188.  move.b (a0,d6.w),d3
  2189.  bge.s .okp1
  2190.  moveq #0,d3
  2191. .okp1
  2192.  
  2193.  sub.w d3,d4
  2194.  swap d3
  2195.  swap d4
  2196.  divs.l #8,d4
  2197.  asr.l #1,d4    ; halfway
  2198.  moveq #3,d2
  2199.  moveq #3*16,d5
  2200. .down:
  2201.  swap d3
  2202.  move.b d3,(a1,d5.w)
  2203.  swap d3
  2204.  sub.w #16,d5
  2205.  add.l d4,d3
  2206.  dbra d2,.down
  2207.  
  2208. BOTPART:
  2209.  
  2210.  moveq #0,d3
  2211.  moveq #0,d4
  2212.  
  2213.  bchg #3,d6
  2214.  
  2215.  move.b 16(a0,d6.w),d4
  2216.  bge.s .okp2
  2217.  moveq #0,d4
  2218. .okp2
  2219.  
  2220.  bchg #3,d6
  2221.  
  2222.  move.b 16(a0,d6.w),d3
  2223.  bge.s .okp1
  2224.  moveq #0,d3
  2225. .okp1
  2226.  
  2227.  sub.w d3,d4
  2228.  swap d3
  2229.  swap d4
  2230.  divs.l #8,d4
  2231.  asr.l #1,d4    ; halfway
  2232.  moveq #3,d2
  2233.  move.w #11*16,d5
  2234. .down:
  2235.  swap d3
  2236.  move.b d3,(a1,d5.w)
  2237.  swap d3
  2238.  add.w #16,d5
  2239.  add.l d4,d3
  2240.  dbra d2,.down
  2241.  
  2242.  
  2243.  subq #1,d6
  2244.  and.w #$f,d6
  2245.  addq #1,a1
  2246.  dbra d7,MYacross
  2247.  
  2248.  movem.l (a7)+,d0-d7/a0-a6
  2249.  
  2250.  
  2251.  move.w (a0),d2
  2252.  move.w d1,d3
  2253.  asr.w #7,d3
  2254.  add.w d3,d2
  2255.  move.w d2,objbright
  2256.  
  2257.  move.w topclip,d2
  2258.  move.w botclip,d3
  2259.  
  2260.  asr.w #1,d2
  2261.  asr.w #1,d3
  2262.  
  2263. ; move.w #10,d2
  2264. ; move.w #70,d3
  2265.  
  2266. ; move.w #10,leftclipb
  2267. ; move.w #85,rightclipb
  2268.  
  2269.  move.w d2,objclipt
  2270.  move.w d3,objclipb
  2271.  
  2272. ; dont use d1 here.
  2273.  
  2274.  move.w 6(a0),d5
  2275.  move.l #POLYOBJECTS,a3
  2276.  move.l (a3,d5.w*4),a3
  2277.  
  2278.  move.w (a3)+,SORTIT
  2279.  
  2280.  move.l a3,START_OF_OBJ
  2281.  
  2282. *******************************************************************
  2283. ***************************************************************
  2284. *****************************************************************
  2285.  
  2286.  move.w (a3)+,num_points
  2287.  move.w (a3)+,d6    ; num_frames
  2288.  
  2289.  
  2290.  move.l a3,POINTER_TO_POINTERS
  2291.  lea (a3,d6.w*4),a3
  2292.  
  2293.  move.l a3,LinesPtr
  2294.  
  2295.  moveq #0,d5
  2296.  move.w 8(a0),d5
  2297.  
  2298. ************************************************
  2299. * Just for charles (animate automatically)
  2300. ; add.w #1,d5
  2301. ; cmp.w d6,d5
  2302. ; blt.s okless
  2303. ; moveq #0,d5
  2304. ;okless:
  2305. ; move.w d5,8(a0)
  2306. ************************************************ 
  2307.  
  2308.  moveq #0,d2
  2309.  move.l POINTER_TO_POINTERS,a4
  2310.  move.w (a4,d5.w*4),d2
  2311.  add.l START_OF_OBJ,d2
  2312.  move.l d2,PtsPtr
  2313.  move.w 2(a4,d5.w*4),d5
  2314.  add.l START_OF_OBJ,d5
  2315.  move.l d5,PolyAngPtr
  2316.  move.l d2,a3
  2317.  move.w num_points,d5
  2318.  
  2319.  move.l (a3)+,OBJONOFF
  2320.  
  2321.  move.l a3,PointAngPtr
  2322.  move.w d5,d2
  2323.  moveq #0,d3
  2324.  lsr.w #1,d2
  2325.  addx.w d3,d2
  2326.  add.w d2,d2
  2327.  add.w d2,a3
  2328.  subq #1,d5
  2329.  
  2330.  move.l #boxrot,a4
  2331.  
  2332.  move.w ObjAng,d2
  2333.  sub.w #2048,d2
  2334.  sub.w angpos,d2
  2335.  and.w #8191,d2
  2336.  move.l #SineTable,a2
  2337.  lea (a2,d2.w),a5
  2338.  move.l #boxbrights,a6
  2339.      
  2340.  move.w (a5),d6
  2341.  move.w 2048(a5),d7
  2342.          
  2343. rotobj:
  2344.  move.w (a3),d2    ; xpt
  2345.  move.w 2(a3),d3    ; ypt
  2346.  move.w 4(a3),d4    ; zpt
  2347.  
  2348. ; add.w d2,d2
  2349. ; add.w d3,d3
  2350. ; add.w d4,d4
  2351.  
  2352. ; first rotate around z axis.
  2353.  
  2354. ; move.w d2,d6
  2355. ; move.w d3,d7
  2356. ; muls 2048(a2),d3
  2357. ; muls (a2),d2
  2358. ; sub.l d3,d2    ; newx
  2359. ; muls (a2),d7
  2360. ; muls 2048(a2),d6
  2361. ; add.l d7,d6    ; newy
  2362. ; add.l d6,d6
  2363. ; swap d6
  2364. ; add.l d2,d2
  2365. ; swap d2
  2366. ; move.w d6,d3    ; newy
  2367.  
  2368.  muls d7,d4
  2369.  muls d6,d2
  2370.  sub.l d4,d2
  2371.  asr.l #8,d2
  2372.  asr.l #2,d2
  2373.  move.l d2,(a4)+
  2374.  ext.l d3
  2375.  asl.l #5,d3
  2376.  move.l d3,(a4)+
  2377.  move.w (a3),d2
  2378.  move.w 4(a3),d4
  2379.  muls d6,d4
  2380.  muls d7,d2
  2381.  add.l d2,d4
  2382. ; add.l d4,d4
  2383.  swap d4
  2384.  move.w d4,(a4)+
  2385.  
  2386.  addq #6,a3
  2387.  dbra d5,rotobj
  2388.  
  2389.  
  2390.  
  2391.  move.l 4(a1,d0.w*8),d0    ; xpos of mid
  2392.  
  2393.  move.w num_points,d7
  2394.  move.l #boxrot,a2
  2395.  move.l #boxonscr,a3
  2396.  move.l #boxbrights,a6
  2397.  move.w 2(a0),d2
  2398.  subq #1,d7
  2399.  
  2400.  tst.b FULLSCR
  2401.  beq.s smallconv
  2402.  
  2403.  move.w d1,d3
  2404.  asl.w #1,d1
  2405.  add.w d3,d1
  2406.  
  2407.  ext.l d2
  2408.  asl.l #7,d2
  2409.  sub.l yoff,d2
  2410.  asl.l #1,d2
  2411. .convtoscr
  2412.  move.l (a2),d3
  2413.  add.l d0,d3
  2414.  move.l d3,(a2)+
  2415.  move.l (a2),d4
  2416.  add.l d2,d4
  2417.  move.l d4,(a2)+
  2418.  move.w (a2),d5
  2419.  add.w d1,d5
  2420.  ble .ptbehind
  2421.  move.w d5,(a2)+
  2422.  add.w d5,d5
  2423.  
  2424.  move.l d3,d6
  2425.  add.l d6,d6
  2426.  add.l d6,d3
  2427.  move.l d4,d6
  2428.  add.l d6,d6
  2429.  add.l d6,d4
  2430.  
  2431.  divs d5,d3
  2432.  divs d5,d4
  2433.  add.w MIDDLEX,d3
  2434.  add.w d4,d4
  2435.  add.w POLYMIDDLEY,d4
  2436.  asr.w #1,d4
  2437.  move.w d3,(a3)+
  2438.  move.w d4,(a3)+
  2439.  
  2440.  dbra d7,.convtoscr
  2441.  bra DONECONV
  2442.  
  2443. .ptbehind:
  2444.  move.w d5,(a2)+
  2445.  move.w #32767,(a3)+
  2446.  move.w #32767,(a3)+
  2447.  dbra d7,.convtoscr
  2448.  bra DONECONV
  2449.  
  2450. smallconv:
  2451.  
  2452. ; asl.w #1,d1
  2453.  ext.l d2
  2454.  asl.l #7,d2
  2455.  sub.l yoff,d2
  2456. ; asl.l #1,d2 
  2457. .convtoscr
  2458.  move.l (a2),d3
  2459.  add.l d0,d3
  2460.  move.l d3,(a2)+
  2461.  move.l (a2),d4
  2462.  add.l d2,d4
  2463.  move.l d4,(a2)+
  2464.  move.w (a2),d5
  2465.  add.w d1,d5
  2466.  ble .ptbehind2
  2467.  move.w d5,(a2)+
  2468.  divs d5,d3
  2469.  divs d5,d4
  2470.  add.w d3,d3
  2471.  add.w MIDDLEX,d3
  2472.  asr.w #1,d3
  2473.  add.w d4,d4
  2474.  add.w POLYMIDDLEY,d4
  2475.  asr.w #1,d4
  2476.  move.w d3,(a3)+
  2477.  move.w d4,(a3)+
  2478.  
  2479.  dbra d7,.convtoscr
  2480.  
  2481.  bra DONECONV
  2482.  
  2483. .ptbehind2:
  2484.  move.w d5,(a2)+
  2485.  move.w #32767,(a3)+
  2486.  move.w #32767,(a3)+
  2487.  dbra d7,.convtoscr
  2488.  
  2489. DONECONV
  2490.  
  2491. **************************
  2492.  move.w num_points,d7
  2493.  
  2494.  move.l #boxbrights,a6
  2495.  subq #1,d7
  2496.  move.l PointAngPtr,a0
  2497.  move.l #PointAndPolyBrights,a2
  2498.  move.w ObjAng,d2
  2499.  asr.w #8,d2
  2500.  asr.w #1,d2
  2501.  st d5
  2502.  
  2503. calcpointangbrights:
  2504.  
  2505.  moveq #0,d0
  2506.  move.b (a0)+,d0
  2507.  move.b d0,d3
  2508.  add.w d2,d3
  2509.  and.w #$f,d3
  2510.  and.w #$f0,d0
  2511.  add.w d3,d0
  2512.  
  2513.  moveq #0,d1
  2514.  move.b (a2,d0.w),d1
  2515.  bge.s .okpos
  2516.  moveq #0,d1
  2517. .okpos:
  2518.  
  2519.  cmp.w #31,d1
  2520.  ble.s .oksmall
  2521.  move.w #31,d1
  2522. .oksmall:
  2523.  
  2524.  move.w d1,(a6)+
  2525.  
  2526.  dbra d7,calcpointangbrights
  2527.  
  2528. *************************
  2529.  
  2530.  
  2531.  
  2532.  move.l LinesPtr,a1
  2533.  
  2534. ; Now need to sort parts of object
  2535. ; into order.
  2536.  
  2537.  move.l #PartBuffer,a0
  2538.  move.l a0,a2
  2539.  move.w #63,d0
  2540. clrpartbuff:
  2541.  
  2542.  move.l #$80000001,(a2)
  2543.  addq #4,a2
  2544.  
  2545.  dbra d0,clrpartbuff
  2546.  
  2547.  move.l #boxrot,a2
  2548.  
  2549.  move.l OBJONOFF,d5
  2550.  
  2551.  tst.w SORTIT
  2552.  bne.s PutinParts
  2553.  
  2554.  
  2555. putinunsorted:
  2556.  
  2557.  move.w (a1)+,d7
  2558.  
  2559.  
  2560.  blt doneallparts
  2561.  
  2562.  lsr.l #1,d5
  2563.  bcs.s .yeson
  2564.  addq #2,a1
  2565.  bra putinunsorted 
  2566. .yeson:
  2567.  
  2568.  
  2569.  move.w (a1)+,d6
  2570.  move.l #0,(a0)+
  2571.  move.w d7,(a0)
  2572.  addq #4,a0
  2573.  
  2574.  bra putinunsorted
  2575.  
  2576.  
  2577. PutinParts
  2578.  move.w (a1)+,d7
  2579.  blt doneallparts
  2580.  
  2581.  lsr.l #1,d5
  2582.  bcs.s .yeson
  2583.  addq #2,a1
  2584.  bra PutinParts
  2585. .yeson:
  2586.  
  2587.  move.w (a1)+,d6
  2588.  move.l (a2,d6.w),d0
  2589.  asr.l #7,d0
  2590.  muls d0,d0
  2591.  move.l 4(a2,d6.w),d2
  2592.  asr.l #7,d2
  2593.  muls d2,d2
  2594.  add.l d2,d0 
  2595.  move.w 8(a2,d6.w),d2
  2596.  muls d2,d2
  2597.  add.l d2,d0
  2598.  move.l #PartBuffer-8,a0
  2599.  
  2600. stillfront
  2601.  addq #8,a0
  2602.  cmp.l (a0),d0
  2603.  blt stillfront
  2604.  move.l #endparttab-8,a5
  2605. domoreshift:
  2606.  move.l -8(a5),(a5)
  2607.  move.l -4(a5),4(a5)
  2608.  subq #8,a5
  2609.  cmp.l a0,a5
  2610.  bgt.s domoreshift
  2611.  
  2612.  move.l d0,(a0)
  2613.  move.w d7,4(a0)
  2614.  
  2615.  bra PutinParts
  2616.  
  2617. doneallparts:
  2618.  
  2619.  move.l #PartBuffer,a0
  2620.  
  2621. Partloop:
  2622.  move.l (a0)+,d7
  2623.  blt nomoreparts
  2624.  
  2625.  moveq #0,d0
  2626.  move.w (a0),d0
  2627.  addq #4,a0
  2628.  add.l START_OF_OBJ,d0
  2629.  move.l d0,a1
  2630.  move.w #0,firstpt
  2631.  
  2632. polyloo:
  2633.  
  2634.  tst.w (a1)
  2635.  blt.s nomorepolys
  2636.  movem.l a0/a1/d7,-(a7)
  2637.  bsr doapoly
  2638.  movem.l (a7)+,a0/a1/d7
  2639.  
  2640.  move.w (a1),d0
  2641.  lea 18(a1,d0.w*4),a1
  2642.  
  2643.  bra.s polyloo
  2644. nomorepolys
  2645.  
  2646.  bra Partloop
  2647.  
  2648. nomoreparts:
  2649.  rts
  2650.  
  2651. firstpt: dc.w 0
  2652.  
  2653. PartBuffer:
  2654.  ds.w 4*32
  2655. endparttab:
  2656.  
  2657. polybright: dc.l 0
  2658. PolyAng: dc.w 0
  2659.  
  2660. doapoly:
  2661.  
  2662.  move.w #960,Left
  2663.  move.w #-10,Right
  2664.  
  2665.  move.w (a1)+,d7    ; lines to draw 
  2666.  move.w (a1)+,preholes
  2667.  move.w 12(a1,d7.w*4),pregour
  2668.  move.l #boxonscr,a3
  2669.  
  2670.  movem.l d0-d7/a0-a6,-(a7)
  2671. * Check for any of these points behind...
  2672.  
  2673. checkbeh:
  2674.  move.w (a1),d0
  2675.  
  2676.  cmp.w #32767,(a3,d0.w*4)
  2677.  bne.s .notbeh
  2678.  cmp.w #32767,2(a3,d0.w*4)
  2679.  bne.s .notbeh
  2680.  
  2681.  movem.l (a7)+,d0-d7/a0-a6
  2682.  bra polybehind
  2683.  
  2684. .notbeh:
  2685.  
  2686.  addq #4,a1
  2687.  dbra d7,checkbeh
  2688.  
  2689.  
  2690.  movem.l (a7)+,d0-d7/a0-a6
  2691.  
  2692.  
  2693.  move.w (a1),d0
  2694.  move.w 4(a1),d1
  2695.  move.w 8(a1),d2
  2696.  move.w 2(a3,d0.w*4),d3
  2697.  move.w 2(a3,d1.w*4),d4
  2698.  move.w 2(a3,d2.w*4),d5
  2699.  move.w (a3,d0.w*4),d0
  2700.  move.w (a3,d1.w*4),d1
  2701.  move.w (a3,d2.w*4),d2
  2702.  
  2703.  sub.w d1,d0    ;x1
  2704.  sub.w d1,d2    ;x2
  2705.  sub.w d4,d3    ;y1
  2706.  sub.w d4,d5    ;y2
  2707.  
  2708.  muls d3,d2
  2709.  muls d5,d0
  2710.  sub.l d0,d2
  2711.  ble polybehind
  2712.  
  2713.  move.l #boxrot,a3
  2714.  move.w (a1),d0
  2715.  move.w d0,d1
  2716.  asl.w #2,d0
  2717.  add.w d1,d0
  2718.  move.w 4(a1),d1
  2719.  move.l d1,d2
  2720.  asl.w #2,d1
  2721.  add.w d2,d1
  2722.  move.w 8(a1),d2
  2723.  move.w d2,d3
  2724.  asl.w #2,d2
  2725.  add.w d3,d2
  2726.  move.l 4(a3,d0.w*2),d3
  2727.  move.l 4(a3,d1.w*2),d4
  2728.  move.l 4(a3,d2.w*2),d5
  2729.  move.l (a3,d0.w*2),d0
  2730.  move.l (a3,d1.w*2),d1
  2731.  move.l (a3,d2.w*2),d2
  2732.  
  2733.  sub.l d1,d0    ;x1
  2734.  sub.l d1,d2    ;x2
  2735.  sub.l d4,d3    ;y1
  2736.  sub.l d4,d5    ;y2
  2737.  
  2738.  asr.l #7,d0
  2739.  asr.l #7,d2
  2740.  asr.l #7,d3
  2741.  asr.l #7,d5
  2742.  
  2743.  muls d3,d2
  2744.  muls d5,d0
  2745.  sub.l d0,d2
  2746.  
  2747.  move.l d2,polybright
  2748.  move.l #boxonscr,a3
  2749.  
  2750.  clr.b drawit
  2751.  
  2752.  tst.b Gouraud(pc)
  2753.  bne.s usegour
  2754.  bsr putinlines
  2755.  bra.s dontusegour
  2756. usegour:
  2757.  bsr putingourlines
  2758. dontusegour:
  2759.  
  2760.  move.w #104*4,linedir
  2761.  move.l frompt,a6
  2762.  
  2763.  tst.b drawit(pc)
  2764.  beq polybehind
  2765.  
  2766.  move.l #PolyTopTab,a4
  2767.  move.w Left(pc),d1
  2768.  move.w Right(pc),d7
  2769.  
  2770.  move.w leftclipb,d3
  2771.  move.w rightclipb,d4
  2772.  cmp.w d3,d7
  2773.  ble polybehind
  2774.  cmp.w d4,d1
  2775.  bge polybehind
  2776.  cmp.w d3,d1
  2777.  bge .notop
  2778.  move.w d3,d1
  2779. .notop
  2780.  cmp.w d4,d7
  2781.  ble .nobot
  2782.  move.w d4,d7
  2783. .nobot
  2784.  
  2785.  add.w d1,d1 
  2786.  lea (a4,d1.w*8),a4
  2787.  asr.w #1,d1
  2788.  sub.w d1,d7
  2789.  ble polybehind
  2790. ; move.w d1,a2
  2791.  move.l #objintocop,a2
  2792.  lea (a2,d1.w*2),a2
  2793.  moveq #0,d0
  2794.  
  2795.  move.l TextureMaps,a0
  2796.  move.w (a1)+,d0
  2797.  ifeq CHEESEY
  2798.  bge.s .notsec
  2799.  and.w #$7fff,d0
  2800.  add.l #65536,a0
  2801. .notsec
  2802.  endc
  2803.  
  2804.  ifne CHEESEY
  2805.  
  2806.  bge.s .notsec
  2807.  and.w #$7fff,d0
  2808.  add.w #%0000010000000000,d0
  2809.  
  2810. .notsec:
  2811.  
  2812.  moveq #0,d1
  2813.  move.w d0,d1   ; 00000XXX 000000YY
  2814.  lsr.w #6,d0
  2815.  add.w d0,d1    ; 00000XXX 000XXXYY
  2816.  and.b #%111,d1 ; 00000XXX 00000XYY
  2817.  add.b d1,d1    ; 00000XXX 0000XYY0
  2818.  lsl.w #4,d1    ; 0XXX0000 XYY00000
  2819.  and.w #%0110000011100000,d1
  2820.  move.w d1,d0
  2821.  
  2822.  endc
  2823.  
  2824.  add.w d0,a0
  2825.  moveq #0,d0
  2826.  moveq #0,d1
  2827.  move.b (a1)+,d1
  2828.  
  2829.  asl.w #5,d1
  2830.  ext.l d1
  2831.  divs #100,d1
  2832.  neg.w d1
  2833.  add.w #31,d1
  2834.  
  2835.  
  2836.  tst.b Holes
  2837.  bne gotholesin
  2838.  tst.b Gouraud(pc)
  2839.  bne gotlurvelyshading
  2840.  
  2841.  move.w ObjAng,d4
  2842.  asr.w #8,d4
  2843.  asr.w #1,d4
  2844.  
  2845.  moveq #0,d2
  2846.  moveq #0,d3
  2847.  move.b (a1)+,d2 
  2848.  move.l PolyAngPtr,a1
  2849.  move.b (a1,d2.w),d2
  2850.  
  2851.  move.b d2,d3
  2852.  add.w d4,d3
  2853.  and.w #$f,d3
  2854.  and.w #$f0,d2
  2855.  add.b d3,d2
  2856.  
  2857.  move.l #PointAndPolyBrights,a1
  2858.  moveq #0,d5
  2859.  move.b (a1,d2.w),d5
  2860.  
  2861.  add.w d5,d1
  2862.  
  2863.  
  2864.  move.l #objscalecols,a1
  2865. ; move.w objbright(pc),d0
  2866. ; add.w d0,d1
  2867.  tst.w d1
  2868.  bge.s toobright
  2869.  move.w #0,d1
  2870. toobright:
  2871.  cmp.w #31,d1
  2872.  blt.s .toodark
  2873.  moveq #31,d1
  2874. .toodark:
  2875.  
  2876.  asl.w #8,d1
  2877. ; move.w (a1,d1.w*2),d1
  2878. ; asl.w #3,d1
  2879.  move.l TexturePal,a1
  2880.  lea (a1,d1.w*2),a1
  2881.  tst.b pregour
  2882.  bne predoglare
  2883.  
  2884. dopoly:
  2885.  
  2886.  move.w #0,offtopby
  2887.  move.l a6,a3
  2888.  adda.w (a2)+,a3
  2889. ; addq #1,a2
  2890.  move.w (a4),d1
  2891.  cmp.w objclipb,d1
  2892.  bge nodl
  2893.  move.w PolyBotTab-PolyTopTab(a4),d2
  2894.  cmp.w objclipt,d2
  2895.  ble nodl
  2896.  cmp.w objclipt,d1
  2897.  bge.s nocl
  2898.  move.w objclipt,d3
  2899.  sub.w d1,d3
  2900.  move.w d3,offtopby
  2901.  move.w objclipt,d1
  2902. nocl: 
  2903.  move.w d2,d0
  2904.  cmp.w objclipb,d2
  2905.  ble.s nocr
  2906.  move.w objclipb,d2
  2907. nocr:
  2908.  
  2909.     ; d1=top end
  2910.     ; d2=bot end
  2911.     
  2912.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  2913.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  2914.     
  2915.  move.l 2(a4),d5
  2916.  move.l 6(a4),d6
  2917.  
  2918.  sub.l d5,d3
  2919.  sub.l d6,d4
  2920.  
  2921. ; asl.w #8,d3
  2922. ; asl.w #8,d4
  2923. ; ext.l d3
  2924. ; ext.l d4
  2925.  
  2926. ; and.b #63,d5
  2927. ; and.b #63,d6
  2928. ; lsl.w #8,d6
  2929. ; move.b d5,d6    ; starting pos
  2930. ; moveq.l #0,d5
  2931. ; move.w d6,d5
  2932.  
  2933.  
  2934.  sub.w d1,d2
  2935.  ble nodl
  2936.  
  2937.  move.w #0,tstdca
  2938.  sub.w d1,d0
  2939.  tst.w offtopby
  2940.  beq.s .notofftop
  2941.  move.l d3,-(a7)
  2942.  move.l d4,-(a7)
  2943.  add.w offtopby,d0
  2944.  ext.l d0    
  2945.  muls.l offtopby-2,d3
  2946.  muls.l offtopby-2,d4
  2947.  divs.l d0,d3
  2948.  divs.l d0,d4
  2949.  
  2950.  add.l d3,d5
  2951.  add.l d4,d6
  2952.  
  2953.  move.l (a7)+,d4
  2954.  move.l (a7)+,d3
  2955. .notofftop: 
  2956.  ext.l d0
  2957.  
  2958.  divs.l d0,d3
  2959.  divs.l d0,d4
  2960.  
  2961.  add.l ontoscr(pc,d1.w*4),a3
  2962.  
  2963.  
  2964.  ifeq CHEESEY
  2965.  move.l #$3fffff,d1
  2966.  endc
  2967.  ifne CHEESEY
  2968.  move.l #$1fffff,d1
  2969.  endc
  2970.  
  2971.  move.l d3,a5
  2972.  moveq #0,d3
  2973.  subq #1,d2
  2974. drawpol:
  2975.  and.l d1,d5
  2976.  and.l d1,d6
  2977.  
  2978.  move.l d6,d0
  2979.  asr.l #8,d0
  2980.  swap d5
  2981.  move.b d5,d0
  2982.  
  2983.  ifeq CHEESEY
  2984.  move.b (a0,d0.w*4),d3
  2985.  endc
  2986.  ifne CHEESEY
  2987.  move.b (a0,d0.w),d3
  2988.  endc
  2989.  
  2990.  swap d5
  2991.  add.l a5,d5
  2992.  add.l d4,d6
  2993.  
  2994.  
  2995.  move.w (a1,d3.w*2),(a3)
  2996.  adda.w #104*4,a3
  2997.  dbra d2,drawpol
  2998.  
  2999. ; add.w a5,d3
  3000. ; addx.l d6,d5
  3001. ; dbcs d2,drawpol2
  3002. ; dbcc d2,drawpol
  3003. ; bra.s pastit
  3004. ;drawpol2:
  3005. ; and.w d1,d5
  3006. ; move.b (a0,d5.w*4),d0
  3007. ; move.w (a1,d0.w*2),(a3)
  3008. ; adda.w #320,a3
  3009. ; add.w a5,d3
  3010. ; addx.l d4,d5
  3011. ; dbcs d2,drawpol2
  3012. ; dbcc d2,drawpol
  3013.  
  3014. pastit:
  3015.  
  3016. nodl:
  3017.  adda.w #16,a4
  3018.  dbra d7,dopoly
  3019.  
  3020.  rts
  3021.  
  3022. ontoscr:
  3023. val SET 0
  3024.  REPT 256
  3025.  dc.l val
  3026. val SET val+104*4
  3027.  ENDR
  3028.  
  3029. predoglare:
  3030.  move.l #SHADINGTABLE-512,a1
  3031.  
  3032. DOGLAREPOLY:
  3033.  
  3034.  move.w #0,offtopby
  3035.  move.l a6,a3
  3036.  adda.w (a2)+,a3
  3037. ; addq #1,a2
  3038.  move.w (a4),d1
  3039.  cmp.w objclipb,d1
  3040.  bge nodlGL
  3041.  move.w PolyBotTab-PolyTopTab(a4),d2
  3042.  cmp.w objclipt,d2
  3043.  ble nodlGL
  3044.  cmp.w objclipt,d1
  3045.  bge.s noclGL
  3046.  move.w objclipt,d3
  3047.  sub.w d1,d3
  3048.  move.w d3,offtopby
  3049.  move.w objclipt,d1
  3050. noclGL:
  3051.  move.w d2,d0
  3052.  cmp.w objclipb,d2
  3053.  ble.s nocrGL
  3054.  move.w objclipb,d2
  3055. nocrGL:
  3056.  
  3057.     ; d1=top end
  3058.     ; d2=bot end
  3059.     
  3060.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  3061.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  3062.     
  3063.  move.l 2(a4),d5
  3064.  move.l 6(a4),d6
  3065.  
  3066.  sub.l d5,d3
  3067.  sub.l d6,d4
  3068.  
  3069. ; asl.w #8,d3
  3070. ; asl.w #8,d4
  3071. ; ext.l d3
  3072. ; ext.l d4
  3073.  
  3074. ; and.b #63,d5
  3075. ; and.b #63,d6
  3076. ; lsl.w #8,d6
  3077. ; move.b d5,d6    ; starting pos
  3078. ; moveq.l #0,d5
  3079. ; move.w d6,d5
  3080.  
  3081.  
  3082.  sub.w d1,d2
  3083.  ble nodlGL
  3084.  
  3085.  move.w #0,tstdca
  3086.  sub.w d1,d0
  3087.  tst.w offtopby
  3088.  beq.s .notofftop
  3089.  move.l d3,-(a7)
  3090.  move.l d4,-(a7)
  3091.  add.w offtopby,d0
  3092.  ext.l d0    
  3093.  muls.l offtopby-2,d3
  3094.  muls.l offtopby-2,d4
  3095.  divs.l d0,d3
  3096.  divs.l d0,d4
  3097.  
  3098.  add.l d3,d5
  3099.  add.l d4,d6
  3100.  
  3101.  move.l (a7)+,d4
  3102.  move.l (a7)+,d3
  3103. .notofftop: 
  3104.  ext.l d0
  3105.  
  3106.  divs.l d0,d3
  3107.  divs.l d0,d4
  3108.  
  3109.  add.l ontoscrGL(pc,d1.w*4),a3
  3110.  
  3111.  ifeq CHEESEY
  3112.  move.l #$3fffff,d1
  3113.  endc
  3114.  ifne CHEESEY
  3115.  move.l #$1fffff,d1
  3116.  endc
  3117.  
  3118.  move.l d3,a5
  3119.  moveq #0,d3
  3120.  subq #1,d2
  3121. drawpolGL:
  3122.  and.l d1,d5
  3123.  and.l d1,d6
  3124.  
  3125.  move.l d6,d0
  3126.  asr.l #8,d0
  3127.  swap d5
  3128.  move.b d5,d0
  3129.  
  3130.  ifeq CHEESEY
  3131.  move.b (a0,d0.w*4),d3
  3132.  endc
  3133.  ifne CHEESEY
  3134.  move.b (a0,d0.w),d3
  3135.  endc
  3136.  beq.s itsblack
  3137.  
  3138.  lsl.w #8,d3
  3139.  move.b (a3),d3
  3140.  
  3141.  swap d5
  3142.  add.l a5,d5
  3143.  add.l d4,d6
  3144.  
  3145.  move.w (a1,d3.w*2),(a3)
  3146.  adda.w #104*4,a3
  3147.  dbra d2,drawpolGL
  3148.  
  3149. nodlGL:
  3150.  adda.w #16,a4
  3151.  dbra d7,DOGLAREPOLY
  3152.  
  3153.  rts
  3154.  
  3155. itsblack:
  3156.  swap d5
  3157.  add.l a5,d5
  3158.  add.l d4,d6 
  3159.  adda.w #104*4,a3
  3160.  dbra d2,drawpolGL
  3161.  adda.w #16,a4
  3162.  dbra d7,DOGLAREPOLY
  3163.  
  3164.  rts
  3165.  
  3166. ontoscrGL:
  3167. val SET 0
  3168.  REPT 256
  3169.  dc.l val
  3170. val SET val+104*4
  3171.  ENDR
  3172.  
  3173. tstdca: dc.l 0
  3174.  dc.w 0
  3175. offtopby: dc.w 0
  3176. LinesPtr: dc.l 0
  3177. PtsPtr: dc.l 0
  3178.  
  3179. gotlurvelyshading:
  3180.  move.l TexturePal,a1
  3181.  tst.b pregour
  3182. ; beq.s .noshiny
  3183. ; add.l #256*32,a1
  3184. ;.noshiny:
  3185. ; neg.w d1
  3186. ; add.w #14,d1
  3187. ; bge.s toobrightg
  3188. ; move.w #0,d1
  3189. ;toobrightg:
  3190. ; asl.w #8,d1
  3191. ; lea (a1,d1.w*2),a1
  3192.  
  3193. dopolyg:
  3194.  move.l d7,-(a7)
  3195.  move.w #0,offtopby
  3196.  move.l a6,a3
  3197.  adda.w (a2)+,a3
  3198. ; addq #1,a2
  3199.  move.w (a4),d1
  3200.  cmp.w objclipb,d1
  3201.  bge nodlg
  3202.  move.w PolyBotTab-PolyTopTab(a4),d2
  3203.  cmp.w objclipt(pc),d2
  3204.  ble nodlg
  3205.  cmp.w objclipt(pc),d1
  3206.  bge.s noclg
  3207.  move.w objclipt,d3
  3208.  sub.w d1,d3
  3209.  move.w d3,offtopby
  3210.  move.w objclipt(pc),d1
  3211. noclg: 
  3212.  move.w d2,d0
  3213.  cmp.w objclipb(pc),d2
  3214.  ble.s nocrg
  3215.  move.w objclipb(pc),d2
  3216. nocrg:
  3217.  
  3218.     ; d1=top end
  3219.     ; d2=bot end
  3220.     
  3221.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  3222.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  3223.     
  3224.  move.l 2(a4),d5
  3225.  move.l 6(a4),d6
  3226.  
  3227.  sub.l d5,d3
  3228.  sub.l d6,d4
  3229.  
  3230. ; asl.w #8,d3
  3231. ; asl.w #8,d4
  3232. ; ext.l d3
  3233. ; ext.l d4
  3234.  
  3235. ; and.b #63,d5
  3236. ; and.b #63,d6
  3237. ; lsl.w #8,d6
  3238. ; move.b d5,d6    ; starting pos
  3239. ; moveq.l #0,d5
  3240. ; move.w d6,d5
  3241.  
  3242.  
  3243.  sub.w d1,d2
  3244.  ble nodlg
  3245.  
  3246.  move.w #0,tstdca
  3247.  sub.w d1,d0
  3248.  tst.w offtopby
  3249.  beq.s .notofftop
  3250.  move.l d3,-(a7)
  3251.  move.l d4,-(a7)
  3252.  add.w offtopby,d0
  3253.  ext.l d0
  3254.  muls.l offtopby-2,d3
  3255.  muls.l offtopby-2,d4
  3256.  divs.l d0,d3
  3257.  divs.l d0,d4
  3258.  
  3259.  add.l d3,d5
  3260.  add.l d4,d6
  3261.  
  3262.  move.l (a7)+,d4
  3263.  move.l (a7)+,d3
  3264. .notofftop
  3265.  ext.l d0
  3266.  
  3267.  divs.l d0,d3
  3268.  divs.l d0,d4
  3269.  
  3270.  add.l ontoscrg(pc,d1.w*4),a3
  3271.  move.w 10+PolyBotTab-PolyTopTab(a4),d1
  3272.  move.w 10(a4),d7
  3273.  sub.w d7,d1
  3274.  asl.w #8,d7
  3275.  swap d1
  3276.  clr.w d1
  3277.  divs.l d0,d1
  3278.  
  3279.  asr.l #8,d1
  3280.  
  3281.  move.l d3,a5
  3282.  moveq #0,d3
  3283.  
  3284.  swap d2
  3285.  move.w d1,d2
  3286.  swap d2
  3287.  
  3288.  ifeq CHEESEY
  3289.  move.l #$3fffff,d1
  3290.  endc
  3291.  ifne CHEESEY
  3292.  move.l #$1fffff,d1
  3293.  endc
  3294.  
  3295.  
  3296.  subq.w #1,d2
  3297. drawpolg:
  3298.  and.l d1,d5
  3299.  and.l d1,d6
  3300.  
  3301.  move.l d6,d0
  3302.  asr.l #8,d0
  3303.  swap d5
  3304.  move.b d5,d0
  3305.  
  3306.  move.w d7,d3
  3307.  
  3308.  ifeq CHEESEY
  3309.  move.b (a0,d0.w*4),d3
  3310.  endc
  3311.  ifne CHEESEY
  3312.  move.b (a0,d0.w),d3
  3313.  endc
  3314.  
  3315.  swap d2
  3316.  swap d5
  3317.  add.l a5,d5
  3318.  add.l d4,d6
  3319.  add.w d2,d7
  3320.  swap d2
  3321.  move.w (a1,d3.w*2),(a3)
  3322.  adda.w #104*4,a3
  3323.  dbra d2,drawpolg
  3324.  
  3325. nodlg:
  3326.  
  3327.  move.l (a7)+,d7
  3328.  adda.w #16,a4
  3329.  dbra d7,dopolyg
  3330.  
  3331.  rts
  3332.  
  3333. ontoscrg:
  3334. val SET 0
  3335.  REPT 256
  3336.  dc.l val
  3337. val SET val+104*4
  3338.  ENDR
  3339.  
  3340.  
  3341.  
  3342.  
  3343. gotholesin:
  3344.  move.w ObjAng,d4
  3345.  asr.w #8,d4
  3346.  asr.w #1,d4
  3347.  
  3348.  moveq #0,d2
  3349.  moveq #0,d3
  3350.  move.b (a1)+,d2
  3351.  
  3352.  move.l PolyAngPtr,a1
  3353.  move.b (a1,d2.w),d2
  3354.  
  3355.  move.b d2,d3
  3356.  lsr.b #4,d3    ;d3=vertical pos
  3357.  add.b d4,d2
  3358.  and.w #$f,d2
  3359.  
  3360.  move.l #ANGLEBRIGHTS,a1
  3361.  moveq #0,d4
  3362.  moveq #0,d5
  3363.  move.b (a1,d2.w),d4    ;top
  3364.  move.b 16(a1,d2.w),d5  ;bottom
  3365.  
  3366.  sub.w d4,d5
  3367.  muls d3,d5
  3368.  divs #14,d5
  3369.  add.w d4,d5
  3370.  
  3371.  add.w d5,d1
  3372.  
  3373.  
  3374.  move.l #objscalecols,a1
  3375.  
  3376. ; move.w objbright(pc),d0
  3377. ; add.w d0,d1
  3378.  tst.w d1
  3379.  bge.s toobrighth
  3380.  move.w #0,d1
  3381. toobrighth:
  3382.  cmp.w #31,d1
  3383.  ble.s toodimh
  3384.  move.w #31,d1
  3385. toodimh:
  3386.  
  3387.  asl.w #8,d1
  3388.  
  3389. ; move.w (a1,d1.w*2),d1
  3390. ; asl.w #3,d1
  3391.  move.l TexturePal,a1
  3392.  lea (a1,d1.w*2),a1
  3393.  tst.b pregour
  3394. ; beq.s .noshiny
  3395. ; add.l #256*32,a1
  3396. ;.noshiny:
  3397.  
  3398. dopolyh:
  3399.  move.w #0,offtopby
  3400.  move.l a6,a3
  3401.  adda.w (a2)+,a3
  3402. ; addq #1,a2
  3403.  move.w (a4),d1
  3404.  cmp.w objclipb,d1
  3405.  bge nodlh
  3406.  move.w PolyBotTab-PolyTopTab(a4),d2
  3407.  cmp.w objclipt,d2
  3408.  ble nodlh
  3409.  cmp.w objclipt,d1
  3410.  bge.s noclh
  3411.  move.w objclipt,d3
  3412.  sub.w d1,d3
  3413.  move.w d3,offtopby
  3414.  move.w objclipt,d1
  3415. noclh: 
  3416.  move.w d2,d0
  3417.  cmp.w objclipb,d2
  3418.  ble.s nocrh
  3419.  move.w objclipb,d2
  3420. nocrh:
  3421.  
  3422.     ; d1=top end
  3423.     ; d2=bot end
  3424.     
  3425.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  3426.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  3427.     
  3428.  move.l 2(a4),d5
  3429.  move.l 6(a4),d6
  3430.  
  3431.  sub.l d5,d3
  3432.  sub.l d6,d4
  3433.  
  3434. ; asl.w #8,d3
  3435. ; asl.w #8,d4
  3436. ; ext.l d3
  3437. ; ext.l d4
  3438.  
  3439. ; and.b #63,d5
  3440. ; and.b #63,d6
  3441. ; lsl.w #8,d6
  3442. ; move.b d5,d6    ; starting pos
  3443. ; moveq #-1,d5
  3444. ; lsr.l #1,d5
  3445. ; move.w d6,d5
  3446.  
  3447.  
  3448.  sub.w d1,d2
  3449.  ble nodlh
  3450.  
  3451.  move.w #0,tstdca
  3452.  sub.w d1,d0
  3453.  tst.w offtopby
  3454.  beq.s .notofftop
  3455.  move.l d3,-(a7)
  3456.  move.l d4,-(a7)
  3457.  add.w offtopby,d0
  3458.  ext.l d0
  3459.  muls.l offtopby-2,d3
  3460.  muls.l offtopby-2,d4
  3461.  divs.l d0,d3
  3462.  divs.l d0,d4
  3463.  
  3464.  add.l d3,d5
  3465.  add.l d4,d6
  3466.  
  3467.  move.l (a7)+,d4
  3468.  move.l (a7)+,d3
  3469. .notofftop:
  3470.  ext.l d0
  3471.  
  3472.  divs.l d0,d3
  3473.  divs.l d0,d4
  3474.  
  3475.  add.l ontoscrh(pc,d1.w*4),a3
  3476.  ifeq CHEESEY
  3477.  move.l #$3fffff,d1
  3478.  endc
  3479.  ifne CHEESEY
  3480.  move.l #$1fffff,d1
  3481.  endc
  3482.  
  3483.  move.l d3,a5
  3484.  moveq #0,d3
  3485.  subq #1,d2
  3486. drawpolh:
  3487.  and.l d1,d5
  3488.  and.l d1,d6
  3489.  
  3490.  move.l d6,d0
  3491.  asr.l #8,d0
  3492.  swap d5
  3493.  move.b d5,d0
  3494.  
  3495.  swap d5
  3496.  add.l a5,d5
  3497.  add.l d4,d6
  3498.  
  3499.  ifeq CHEESEY
  3500.  move.b (a0,d0.w*4),d3
  3501.  endc
  3502.  ifne CHEESEY
  3503.  move.b (a0,d0.w),d3
  3504.  endc
  3505.  
  3506.  beq.s .dontplot
  3507.  move.w (a1,d3.w*2),(a3)
  3508. .dontplot
  3509.  adda.w #104*4,a3
  3510.  dbra d2,drawpolh
  3511.  
  3512. pastith:
  3513.  
  3514. nodlh:
  3515.  adda.w #16,a4
  3516.  dbra d7,dopolyh
  3517.  
  3518.  rts
  3519.  
  3520. ontoscrh:
  3521. val SET 0
  3522.  REPT 256
  3523.  dc.l val
  3524. val SET val+104*4
  3525.  ENDR
  3526.  
  3527.  EVEN
  3528. pregour:
  3529.  dc.b 0
  3530. Gouraud:
  3531.  dc.b 0
  3532. preholes:
  3533.  dc.b 0
  3534. Holes: 
  3535.  dc.b 0
  3536.  
  3537. putinlines:
  3538.  
  3539.  move.w (a1),d0
  3540.  move.w 4(a1),d1
  3541.  
  3542.  move.w (a3,d0.w*4),d2
  3543.  move.w 2(a3,d0.w*4),d3
  3544.  move.w (a3,d1.w*4),d4
  3545.  move.w 2(a3,d1.w*4),d5
  3546.  
  3547. ; d2=x1 d3=y1 d4=x2 d5=y2
  3548.  
  3549.  cmp.w d2,d4
  3550.  beq thislineflat
  3551.  bgt thislineontop
  3552.  move.l #PolyBotTab,a4
  3553.  exg d2,d4
  3554.  exg d3,d5
  3555.  
  3556.  cmp.w rightclipb,d2
  3557.  bge thislineflat
  3558.  cmp.w leftclipb,d4
  3559.  ble thislineflat
  3560.  move.w rightclipb,d6
  3561.  sub.w d4,d6
  3562.  ble.s .clipr
  3563.  move.w #0,-(a7)
  3564.  cmp.w Right(pc),d4
  3565.  ble.s .nonewbot
  3566.  move.w d4,Right
  3567.  bra.s .nonewbot
  3568.  
  3569. .clipr
  3570.  move.w d6,-(a7)
  3571.  move.w rightclipb,Right
  3572.  sub.w #1,Right
  3573. .nonewbot:
  3574.  
  3575.  move.w #0,offleftby
  3576.  move.w d2,d6
  3577.  cmp.w leftclipb,d6
  3578.  bge .okt
  3579.  move.w leftclipb,d6
  3580.  sub.w d2,d6
  3581.  move.w d6,offleftby
  3582.  add.w d2,d6
  3583. .okt:
  3584.  
  3585.  st drawit
  3586.  add.w d6,d6
  3587.  lea (a4,d6.w*8),a4
  3588.  asr.w #1,d6
  3589.  cmp.w Left(pc),d6
  3590.  bge.s .nonewtop
  3591.  move.w d6,Left
  3592. .nonewtop
  3593.  
  3594.  sub.w d3,d5    ; dy
  3595.  swap d3
  3596.  clr.w d3    ; d2=xpos
  3597.  sub.w d2,d4    ; dx > 0
  3598.  ext.l d4
  3599.  swap d5
  3600.  clr.w d5
  3601.  divs.l d4,d5
  3602.  moveq #0,d2
  3603.  move.b 2(a1),d2
  3604.  ifne CHEESEY
  3605.  asr.w #1,d2
  3606.  endc
  3607.  
  3608.  moveq #0,d6
  3609.  move.b 6(a1),d6
  3610.  ifne CHEESEY
  3611.  asr.w #1,d6
  3612.  endc
  3613.  sub.w d6,d2
  3614.  swap d2
  3615.  swap d6
  3616.  clr.w d2
  3617.  clr.w d6    ; d6=xbitpos
  3618.  divs.l d4,d2
  3619.  move.l d5,a5    ; a5=dy constant
  3620.  move.l d2,a6    ; a6=xbitconst
  3621.  
  3622.  moveq #0,d5
  3623.  move.b 3(a1),d5
  3624.  ifne CHEESEY
  3625.  asr.w #1,d5
  3626.  endc
  3627.  moveq #0,d2
  3628.  move.b 7(a1),d2
  3629.  ifne CHEESEY
  3630.  asr.w #1,d2
  3631.  endc
  3632.  sub.w d2,d5
  3633.  swap d2
  3634.  swap d5
  3635.  clr.w d2    ; d3=ybitpos
  3636.  clr.w d5
  3637.  divs.l d4,d5
  3638.  
  3639.  add.w (a7)+,d4
  3640.  sub.w offleftby(pc),d4
  3641.  blt thislineflat
  3642.  
  3643.  tst.w offleftby(pc)
  3644.  beq.s .noneoffleft
  3645.  move.w d4,-(a7)
  3646.  move.w offleftby(pc),d4
  3647.  dbra d4,.calcnodraw
  3648.  bra .nodrawoffleft
  3649. .calcnodraw
  3650.  
  3651.  add.l a5,d3
  3652.  add.l a6,d6
  3653.  add.l d5,d2
  3654.  dbra d4,.calcnodraw
  3655. .nodrawoffleft:
  3656.  move.w (a7)+,d4
  3657. .noneoffleft:
  3658.  
  3659. .putinline:
  3660.  
  3661.  swap d3
  3662.  move.w d3,(a4)+
  3663.  swap d3
  3664.  move.l d6,(a4)+
  3665.  move.l d2,(a4)+
  3666.  addq #6,a4
  3667.  
  3668.  add.l a5,d3
  3669.  add.l a6,d6
  3670.  add.l d5,d2
  3671.  
  3672.  dbra d4,.putinline
  3673.  
  3674.  bra thislineflat
  3675.  
  3676. thislineontop:
  3677.  move.l #PolyTopTab,a4
  3678.  
  3679.  cmp.w rightclipb,d2
  3680.  bge thislineflat
  3681.  cmp.w leftclipb,d4
  3682.  ble thislineflat
  3683.  move.w rightclipb,d6
  3684.  sub.w d4,d6
  3685.  ble.s .clipr
  3686.  move.w #0,-(a7)
  3687.  cmp.w Right(pc),d4
  3688.  ble.s .nonewbot
  3689.  move.w d4,Right
  3690.  bra.s .nonewbot
  3691.  
  3692. .clipr
  3693.  move.w d6,-(a7)
  3694.  move.w rightclipb,Right
  3695.  sub.w #1,Right
  3696. .nonewbot:
  3697.  
  3698.  move.w #0,offleftby
  3699.  move.w d2,d6
  3700.  cmp.w leftclipb,d6
  3701.  bge .okt
  3702.  move.w leftclipb,d6
  3703.  sub.w d2,d6
  3704.  move.w d6,offleftby
  3705.  add.w d2,d6
  3706. .okt:
  3707.  
  3708.  st drawit
  3709.  add.w d6,d6
  3710.  lea (a4,d6.w*8),a4
  3711.  asr.w #1,d6
  3712.  cmp.w Left(pc),d6
  3713.  bge.s .nonewtop
  3714.  move.w d6,Left
  3715. .nonewtop
  3716.  
  3717.  sub.w d3,d5    ; dy
  3718.  swap d3
  3719.  clr.w d3    ; d2=xpos
  3720.  sub.w d2,d4    ; dx > 0
  3721.  ext.l d4
  3722.  swap d5
  3723.  clr.w d5
  3724.  divs.l d4,d5
  3725.  moveq #0,d2
  3726.  move.b 6(a1),d2
  3727.  ifne CHEESEY
  3728.  asr.w #1,d2
  3729.  endc
  3730.  moveq #0,d6
  3731.  move.b 2(a1),d6
  3732.  ifne CHEESEY
  3733.  asr.w #1,d6
  3734.  endc
  3735.  sub.w d6,d2
  3736.  swap d2
  3737.  swap d6
  3738.  clr.w d2
  3739.  clr.w d6    ; d6=xbitpos
  3740.  divs.l d4,d2
  3741.  move.l d5,a5    ; a5=dy constant
  3742.  move.l d2,a6    ; a6=xbitconst
  3743.  
  3744.  moveq #0,d5
  3745.  move.b 7(a1),d5
  3746.  ifne CHEESEY
  3747.  asr.w #1,d5
  3748.  endc
  3749.  moveq #0,d2
  3750.  move.b 3(a1),d2
  3751.  ifne CHEESEY
  3752.  asr.w #1,d2
  3753.  endc
  3754.  sub.w d2,d5
  3755.  swap d2
  3756.  swap d5
  3757.  clr.w d2    ; d3=ybitpos
  3758.  clr.w d5
  3759.  divs.l d4,d5
  3760.  
  3761.  add.w (a7)+,d4
  3762.  sub.w offleftby(pc),d4
  3763.  blt.s thislineflat
  3764.  
  3765.  tst.w offleftby(pc)
  3766.  beq.s .noneoffleft
  3767.  move.w d4,-(a7)
  3768.  move.w offleftby(pc),d4
  3769.  dbra d4,.calcnodraw
  3770.  bra .nodrawoffleft
  3771. .calcnodraw
  3772.  
  3773.  add.l a5,d3
  3774.  add.l a6,d6
  3775.  add.l d5,d2
  3776.  dbra d4,.calcnodraw
  3777. .nodrawoffleft:
  3778.  move.w (a7)+,d4
  3779. .noneoffleft:
  3780.  
  3781.  
  3782. .putinline:
  3783.  
  3784.  swap d3
  3785.  move.w d3,(a4)+
  3786.  swap d3
  3787.  move.l d6,(a4)+
  3788.  move.l d2,(a4)+
  3789.  addq #6,a4
  3790.  
  3791.  add.l a5,d3
  3792.  add.l a6,d6
  3793.  add.l d5,d2
  3794.  
  3795.  dbra d4,.putinline
  3796.  
  3797. thislineflat:
  3798.  addq #4,a1
  3799.  dbra d7,putinlines
  3800.  addq #4,a1
  3801.  rts
  3802.  
  3803. putingourlines:
  3804.  
  3805.  move.l #boxbrights,a2
  3806.  
  3807. piglloop:
  3808.  
  3809.  move.w (a1),d0
  3810.  move.w 4(a1),d1
  3811.  
  3812.  move.w (a3,d0.w*4),d2
  3813.  move.w 2(a3,d0.w*4),d3
  3814.  move.w (a3,d1.w*4),d4
  3815.  move.w 2(a3,d1.w*4),d5
  3816.  
  3817.  
  3818.  
  3819.  cmp.w d2,d4
  3820.  beq thislineflatgour
  3821.  bgt thislineontopgour
  3822.  move.l #PolyBotTab,a4
  3823.  exg d2,d4
  3824.  exg d3,d5
  3825.  
  3826.  cmp.w rightclipb,d2
  3827.  bge thislineflatgour
  3828.  cmp.w leftclipb,d4
  3829.  ble thislineflatgour
  3830.  move.w rightclipb,d6
  3831.  sub.w d4,d6
  3832.  ble.s .clipr
  3833.  move.w #0,-(a7)
  3834.  cmp.w Right(pc),d4
  3835.  ble.s .nonewbot
  3836.  move.w d4,Right
  3837.  bra.s .nonewbot
  3838.  
  3839. .clipr
  3840.  move.w d6,-(a7)
  3841.  move.w rightclipb,Right
  3842.  sub.w #1,Right
  3843. .nonewbot:
  3844.  
  3845.  move.w #0,offleftby
  3846.  move.w d2,d6
  3847.  cmp.w leftclipb,d6
  3848.  bge .okt
  3849.  move.w leftclipb,d6
  3850.  sub.w d2,d6
  3851.  move.w d6,offleftby
  3852.  add.w d2,d6
  3853. .okt:
  3854.  
  3855.  st drawit
  3856.  add.w d6,d6
  3857.  lea (a4,d6.w*8),a4
  3858.  asr.w #1,d6
  3859.  cmp.w Left(pc),d6
  3860.  bge.s .nonewtop
  3861.  move.w d6,Left
  3862. .nonewtop
  3863.  
  3864.  sub.w d3,d5    ; dy
  3865.  swap d3
  3866.  clr.w d3    ; d2=xpos
  3867.  sub.w d2,d4    ; dx > 0
  3868.  ext.l d4
  3869.  swap d5
  3870.  clr.w d5
  3871.  divs.l d4,d5
  3872.  moveq #0,d2
  3873.  move.b 2(a1),d2
  3874.  ifne CHEESEY
  3875.  asr.w #1,d2
  3876.  endc
  3877.  moveq #0,d6
  3878.  move.b 6(a1),d6
  3879.  ifne CHEESEY
  3880.  asr.w #1,d6
  3881.  endc
  3882.  sub.w d6,d2
  3883.  swap d2
  3884.  swap d6
  3885.  clr.w d2
  3886.  clr.w d6    ; d6=xbitpos
  3887.  divs.l d4,d2
  3888.  move.l d5,a5    ; a5=dy constant
  3889.  move.l d2,a6    ; a6=xbitconst
  3890.  
  3891.  moveq #0,d5
  3892.  move.b 3(a1),d5
  3893.  ifne CHEESEY
  3894.  asr.w #1,d5
  3895.  endc
  3896.  moveq #0,d2
  3897.  move.b 7(a1),d2
  3898.  ifne CHEESEY
  3899.  asr.w #1,d2
  3900.  endc
  3901.  
  3902.  sub.w d2,d5
  3903.  swap d2
  3904.  swap d5
  3905.  clr.w d2    ; d3=ybitpos
  3906.  clr.w d5
  3907.  divs.l d4,d5
  3908.  
  3909.  move.w (a2,d1.w*2),d1
  3910.  move.w (a2,d0.w*2),d0
  3911.  sub.w d1,d0
  3912.  swap d0
  3913.  swap d1
  3914.  clr.w d0
  3915.  clr.w d1
  3916.  divs.l d4,d0
  3917.  
  3918.  add.w (a7)+,d4
  3919.  sub.w offleftby(pc),d4
  3920.  blt thislineflatgour
  3921.  
  3922.  tst.w offleftby(pc)
  3923.  beq.s .noneoffleft
  3924.  move.w d4,-(a7)
  3925.  move.w offleftby(pc),d4
  3926.  dbra d4,.calcnodraw
  3927.  bra .nodrawoffleft
  3928. .calcnodraw
  3929.  add.l d0,d1
  3930.  add.l a5,d3
  3931.  add.l a6,d6
  3932.  add.l d5,d2
  3933.  dbra d4,.calcnodraw
  3934. .nodrawoffleft:
  3935.  move.w (a7)+,d4
  3936. .noneoffleft:
  3937.  
  3938. .putinline:
  3939.  
  3940.  swap d3
  3941.  move.w d3,(a4)+
  3942.  swap d3
  3943.  move.l d6,(a4)+
  3944.  move.l d2,(a4)+
  3945.  swap d1
  3946.  move.w d1,(a4)
  3947.  addq #6,a4
  3948.  swap d1
  3949.  
  3950.  add.l d0,d1
  3951.  add.l a5,d3
  3952.  add.l a6,d6
  3953.  add.l d5,d2
  3954.  
  3955.  dbra d4,.putinline
  3956.  
  3957.  bra thislineflatgour
  3958.  
  3959. thislineontopgour:
  3960.  move.l #PolyTopTab,a4
  3961.  
  3962.  cmp.w rightclipb,d2
  3963.  bge thislineflatgour
  3964.  cmp.w leftclipb,d4
  3965.  ble thislineflatgour
  3966.  move.w rightclipb,d6
  3967.  sub.w d4,d6
  3968.  ble.s .clipr
  3969.  move.w #0,-(a7)
  3970.  cmp.w Right(pc),d4
  3971.  ble.s .nonewbot
  3972.  move.w d4,Right
  3973.  bra.s .nonewbot
  3974.  
  3975. .clipr
  3976.  move.w d6,-(a7)
  3977.  move.w rightclipb,Right
  3978.  sub.w #1,Right
  3979. .nonewbot:
  3980.  
  3981.  move.w #0,offleftby
  3982.  move.w d2,d6
  3983.  cmp.w leftclipb,d6
  3984.  bge .okt
  3985.  move.w leftclipb,d6
  3986.  sub.w d2,d6
  3987.  move.w d6,offleftby
  3988.  add.w d2,d6
  3989. .okt:
  3990.  
  3991.  st drawit
  3992.  add.w d6,d6
  3993.  lea (a4,d6.w*8),a4
  3994.  asr.w #1,d6
  3995.  cmp.w Left(pc),d6
  3996.  bge.s .nonewtop
  3997.  move.w d6,Left
  3998. .nonewtop
  3999.  
  4000.  sub.w d3,d5    ; dy
  4001.  swap d3
  4002.  clr.w d3    ; d2=xpos
  4003.  sub.w d2,d4    ; dx > 0
  4004.  ext.l d4
  4005.  swap d5
  4006.  clr.w d5
  4007.  divs.l d4,d5
  4008.  moveq #0,d2
  4009.  move.b 6(a1),d2
  4010.  ifne CHEESEY
  4011.  asr.w #1,d2
  4012.  endc
  4013.  moveq #0,d6
  4014.  move.b 2(a1),d6
  4015.  ifne CHEESEY
  4016.  asr.w #1,d6
  4017.  endc
  4018.  sub.w d6,d2
  4019.  swap d2
  4020.  swap d6
  4021.  clr.w d2
  4022.  clr.w d6    ; d6=xbitpos
  4023.  divs.l d4,d2
  4024.  move.l d5,a5    ; a5=dy constant
  4025.  move.l d2,a6    ; a6=xbitconst
  4026.  
  4027.  moveq #0,d5
  4028.  move.b 7(a1),d5
  4029.  ifne CHEESEY
  4030.  asr.w #1,d5
  4031.  endc
  4032.  moveq #0,d2
  4033.  move.b 3(a1),d2
  4034.  ifne CHEESEY
  4035.  asr.w #1,d2
  4036.  endc
  4037.  
  4038.  sub.w d2,d5
  4039.  swap d2
  4040.  swap d5
  4041.  clr.w d2    ; d3=ybitpos
  4042.  clr.w d5
  4043.  divs.l d4,d5
  4044.  
  4045.  move.w (a2,d1.w*2),d1
  4046.  move.w (a2,d0.w*2),d0
  4047.  sub.w d0,d1
  4048.  swap d0
  4049.  swap d1
  4050.  clr.w d0
  4051.  clr.w d1
  4052.  divs.l d4,d1
  4053.  
  4054.  add.w (a7)+,d4
  4055.  sub.w offleftby(pc),d4
  4056.  blt.s thislineflatgour
  4057.  
  4058.  tst.w offleftby(pc)
  4059.  beq.s .noneoffleft
  4060.  move.w d4,-(a7)
  4061.  move.w offleftby(pc),d4
  4062.  dbra d4,.calcnodraw
  4063.  bra .nodrawoffleft
  4064. .calcnodraw
  4065.  add.l d1,d0
  4066.  add.l a5,d3
  4067.  add.l a6,d6
  4068.  add.l d5,d2
  4069.  dbra d4,.calcnodraw
  4070. .nodrawoffleft:
  4071.  move.w (a7)+,d4
  4072. .noneoffleft:
  4073.  
  4074.  
  4075. .putinline:
  4076.  
  4077.  swap d3
  4078.  move.w d3,(a4)+
  4079.  swap d3
  4080.  move.l d6,(a4)+
  4081.  move.l d2,(a4)+
  4082.  swap d0
  4083.  move.w d0,(a4)
  4084.  addq #6,a4
  4085.  swap d0
  4086.  
  4087.  add.l d1,d0
  4088.  add.l a5,d3
  4089.  add.l a6,d6
  4090.  add.l d5,d2
  4091.  
  4092.  dbra d4,.putinline
  4093.  
  4094. thislineflatgour:
  4095.  addq #4,a1
  4096.  dbra d7,piglloop
  4097.  addq #4,a1
  4098.  rts
  4099.  
  4100. offleftby: dc.w 0
  4101. Left: dc.w 0
  4102. Right: dc.w 0
  4103.  
  4104. PointAndPolyBrights:
  4105.  ds.l 4*16
  4106.  
  4107.  
  4108. POINTER_TO_POINTERS: dc.l 0
  4109. START_OF_OBJ: dc.l 0
  4110. num_points: dc.w 0
  4111.  
  4112. POLYOBJECTS:
  4113.  ds.l 40
  4114. ; dc.l Spider_des
  4115. ; dc.l Medi_des
  4116. ; dc.l Exit_des
  4117. ; dc.l Crate_des
  4118. ; dc.l Terminal_des
  4119. ; dc.l Blue_des
  4120. ; dc.l Green_des
  4121. ; dc.l Red_des
  4122. ; dc.l Yellow_des
  4123. ; dc.l Gas_des
  4124. ; dc.l Torch_des
  4125.  
  4126. Spider_des:
  4127. ; incbin "ab3:vectobj/robot"
  4128.  incbin "ab3:vectobj/walllamp"
  4129.  
  4130. ;Medi_des:
  4131. ; incbin "ab3:vectobj/testgrill"
  4132. ;Exit_des:
  4133. ; incbin "ab3:vectobj/exitsign
  4134. ;Crate_des:
  4135. ; incbin "ab3:vectobj/droid"
  4136. ;Terminal_des:
  4137. ; incbin "ab3:includes/terminal.vec"
  4138. ;Blue_des:
  4139. ; incbin "ab3:vectobj/blueind"
  4140. ;Green_des:
  4141. ; incbin "ab3:vectobj/Greenind"
  4142. ;Red_des:
  4143. ; incbin "ab3:vectobj/Redind"
  4144. ;Yellow_des:
  4145. ; incbin "ab3:vectobj/yellowind"
  4146. ;Gas_des:
  4147. ; incbin "ab3:vectobj/gaspipe"
  4148. ;Torch_des:
  4149. ; incbin "ab3:vectobj/torch"
  4150.  
  4151. boxonscr:
  4152.  ds.l 250*2
  4153. boxrot: ds.l 3*250
  4154.  
  4155. boxbrights: 
  4156.     ds.w 250
  4157.  
  4158. boxang: dc.w 0 
  4159.  
  4160.  ds.w 320*4
  4161. PolyBotTab: ds.w 320*8
  4162.  ds.w 320*4
  4163. PolyTopTab: ds.w 320*8
  4164.  ds.w 320*4
  4165.  
  4166. offset:
  4167.  dc.w 0
  4168. timer:
  4169.  dc.w 0
  4170.  
  4171. Objects:
  4172. ; Lookup table for OBJECT GRAPHIC TYPE
  4173. ; in object data (offset 8)
  4174. ;0
  4175.  dc.l ALIEN_WAD,ALIEN_PTR,ALIEN_FRAMES,ALIEN_PAL
  4176. ;1
  4177.  dc.l PICKUPS_WAD,PICKUPS_PTR,PICKUPS_FRAMES,PICKUPS_PAL
  4178. ;2
  4179.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,BIGBULLET_FRAMES,BIGBULLET_PAL
  4180. ;3
  4181.  dc.l UGLYMONSTER_WAD,UGLYMONSTER_PTR,UGLYMONSTER_FRAMES,UGLYMONSTER_PAL
  4182. ;4
  4183.  dc.l FLYINGMONSTER_WAD,FLYINGMONSTER_PTR,FLYINGMONSTER_FRAMES,FLYINGMONSTER_PAL
  4184. ;5
  4185.  dc.l KEYS_WAD,KEYS_PTR,KEYS_FRAMES,KEYS_PAL
  4186. ;6
  4187.  dc.l ROCKETS_WAD,ROCKETS_PTR,ROCKETS_FRAMES,ROCKETS_PAL
  4188. ;7
  4189.  dc.l BARREL_WAD,BARREL_PTR,BARREL_FRAMES,BARREL_PAL
  4190. ;8
  4191.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,EXPLOSION_FRAMES,EXPLOSION_PAL
  4192. ;9
  4193.  dc.l GUNS_WAD,GUNS_PTR,GUNS_FRAMES,GUNS_PAL
  4194. ;10:
  4195.  dc.l MARINE_WAD,MARINE_PTR,MARINE_FRAMES,MARINE_PAL
  4196. ;11:
  4197.  dc.l BIGALIEN_WAD,BIGALIEN_PTR,BIGALIEN_FRAMES,BIGALIEN_PAL
  4198. ;12:
  4199.  dc.l 0,0,LAMPS_FRAMES,LAMPS_PAL
  4200. ;13:
  4201.  dc.l 0,0,WORM_FRAMES,WORM_PAL
  4202. ;14:
  4203.  dc.l 0,0,BIGCLAWS_FRAMES,BIGCLAWS_PAL
  4204. ;15:
  4205.  dc.l 0,0,TREE_FRAMES,TREE_PAL
  4206. ;16:
  4207.  dc.l 0,0,TOUGHMARINE_FRAMES,TOUGHMARINE_PAL
  4208. ;17:
  4209.  dc.l 0,0,FLAMEMARINE_FRAMES,FLAMEMARINE_PAL
  4210. ;18:
  4211.  dc.l 0,0,GLARE_FRAMES,0
  4212.  ds.l 4*20
  4213.  
  4214. GLARE_FRAMES:
  4215.  dc.w 0,0
  4216.  dc.w 32*4,0
  4217.  dc.w 32*4*2,0
  4218.  dc.w 32*4*3,0
  4219.  
  4220.  dc.w 0,32
  4221.  dc.w 32*4,32
  4222.  dc.w 32*4*2,32
  4223.  dc.w 32*4*3,32
  4224.  
  4225. ALIEN_WAD:
  4226. ; incbin "ALIEN2.wad"
  4227. ALIEN_PTR:
  4228. ; incbin "ALIEN2.ptr"
  4229. ALIEN_FRAMES:
  4230. ; walking=0-3
  4231.  dc.w 0,0
  4232.  dc.w 64*4,0 
  4233.  dc.w 64*4*2,0
  4234.  dc.w 64*4*3,0
  4235.  dc.w 64*4*4,0
  4236.  dc.w 64*4*5,0
  4237.  dc.w 64*4*6,0
  4238.  dc.w 64*4*7,0
  4239.  dc.w 64*4*8,0
  4240.  dc.w 64*4*9,0
  4241.  dc.w 64*4*10,0
  4242.  dc.w 64*4*11,0
  4243.  dc.w 64*4*12,0
  4244.  dc.w 64*4*13,0
  4245.  dc.w 64*4*14,0
  4246.  dc.w 64*4*15,0
  4247. ;Exploding=16-31
  4248.  dc.w 4*(64*16),0
  4249.  dc.w 4*(64*16+16),0
  4250.  dc.w 4*(64*16+32),0
  4251.  dc.w 4*(64*16+48),0
  4252.  
  4253.  dc.w 4*(64*16),16
  4254.  dc.w 4*(64*16+16),16
  4255.  dc.w 4*(64*16+32),16
  4256.  dc.w 4*(64*16+48),16
  4257.  
  4258.  dc.w 4*(64*16),32
  4259.  dc.w 4*(64*16+16),32
  4260.  dc.w 4*(64*16+32),32
  4261.  dc.w 4*(64*16+48),32
  4262.  
  4263.  dc.w 4*(64*16),48
  4264.  dc.w 4*(64*16+16),48
  4265.  dc.w 4*(64*16+32),48
  4266.  dc.w 4*(64*16+48),48
  4267. ;dying=32-33
  4268.  dc.w 64*4*17,0
  4269.  dc.w 64*4*18,0
  4270.  
  4271.  
  4272. ALIEN_PAL:
  4273. ; incbin "alien2.256pal"
  4274.  
  4275. PICKUPS_WAD:
  4276. ; incbin "Pickups.wad"
  4277. PICKUPS_PTR:
  4278. ; incbin "PICKUPS.ptr"
  4279. PICKUPS_FRAMES:
  4280. ; medikit=0
  4281.  dc.w 0,0
  4282. ; big gun=1
  4283.  dc.w 0,32
  4284. ; bullet=2
  4285.  dc.w 64*4,32
  4286. ; Ammo=3
  4287.  dc.w 32*4,0 
  4288. ;battery=4
  4289.  dc.w 64*4,0
  4290. ;Rockets=5
  4291.  dc.w 192*4,0
  4292. ;gunpop=6-16
  4293.  dc.w 128*4,0
  4294.  dc.w (128+16)*4,0
  4295.  dc.w (128+32)*4,0
  4296.  dc.w (128+48)*4,0
  4297.  dc.w 128*4,16
  4298.  dc.w (128+16)*4,16
  4299.  dc.w (128+32)*4,16
  4300.  dc.w (128+48)*4,16
  4301.  dc.w 128*4,32
  4302.  dc.w (128+16)*4,32
  4303.  dc.w (128+32)*4,32
  4304.  dc.w (64+16)*4,32
  4305.  dc.w (64*4),48
  4306.  dc.w (64+16)*4,48
  4307.  
  4308. ; RocketLauncher=20
  4309.  dc.w (64+32)*4,0
  4310.  
  4311. ;grenade = 21-24
  4312.  dc.w 64*4,32
  4313.  dc.w (64+16)*4,32
  4314.  dc.w (64+16)*4,48
  4315.  dc.w 64*4,48
  4316.  
  4317. ; shotgun = 25
  4318.  dc.w 128*4,32
  4319.  
  4320. ; grenade launcher =26
  4321.  dc.w 256*4,0
  4322.  
  4323. ; shotgun shells*4=27
  4324.  dc.w 64*3*4,32
  4325. ; shotgun shells*20=28
  4326.  dc.w (64*3+32)*4,0
  4327. ; grenade clip=29
  4328.  dc.w (64*3+32)*4,32
  4329.  
  4330.  
  4331. PICKUPS_PAL:
  4332. ; incbin "PICKUPS.256pal"
  4333.  
  4334. BIGBULLET_WAD:
  4335. ; incbin "bigbullet.wad"
  4336. BIGBULLET_PTR:
  4337. ; incbin "bigbullet.ptr"
  4338. BIGBULLET_FRAMES:
  4339.  dc.w 0,0
  4340.  dc.w 0,32
  4341.  dc.w 32*4,0
  4342.  dc.w 32*4,32
  4343.  dc.w 64*4,0
  4344.  dc.w 64*4,32
  4345.  dc.w 96*4,0
  4346.  dc.w 96*4,32
  4347.  
  4348.  dc.w 128*4,0
  4349.  dc.w 128*4,32
  4350.  dc.w 32*5*4,0
  4351.  dc.w 32*5*4,32
  4352.  dc.w 32*6*4,0
  4353.  dc.w 32*6*4,32
  4354.  dc.w 32*7*4,0
  4355.  dc.w 32*7*4,32
  4356.  dc.w 32*8*4,0
  4357.  dc.w 32*8*4,32
  4358.  dc.w 32*9*4,0
  4359.  dc.w 32*9*4,32
  4360. BIGBULLET_PAL
  4361. ; incbin "bigbullet.256pal"
  4362.  
  4363. EXPLOSION_FRAMES:
  4364.  dc.w 0,0
  4365.  dc.w 64*4,0
  4366.  dc.w 64*4*2,0
  4367.  dc.w 64*4*3,0
  4368.  dc.w 64*4*4,0
  4369.  dc.w 64*4*5,0
  4370.  dc.w 64*4*6,0
  4371.  dc.w 64*4*7,0
  4372.  dc.w 64*4*8,0
  4373.  
  4374. EXPLOSION_PAL
  4375. ; incbin "explosion.256pal"
  4376.  
  4377. UGLYMONSTER_WAD:
  4378. ; incbin "uglymonster.wad"
  4379. UGLYMONSTER_PTR:
  4380. ; incbin "uglymonster.ptr"
  4381. UGLYMONSTER_FRAMES:
  4382.  dc.w 0,0
  4383. UGLYMONSTER_PAL:
  4384. ; incbin "uglymonster.pal"
  4385.  
  4386. FLYINGMONSTER_WAD:
  4387. ; incbin "FLYINGalien.wad"
  4388. FLYINGMONSTER_PTR:
  4389. ; incbin "FLYINGalien.ptr"
  4390. FLYINGMONSTER_FRAMES:
  4391.  dc.w 0,0
  4392.  dc.w 64*4,0 
  4393.  dc.w 64*4*2,0 
  4394.  dc.w 64*4*3,0 
  4395.  dc.w 64*4*4,0 
  4396.  dc.w 64*4*5,0 
  4397.  dc.w 64*4*6,0 
  4398.  dc.w 64*4*7,0 
  4399.  dc.w 64*4*8,0 
  4400.  dc.w 64*4*9,0 
  4401.  dc.w 64*4*10,0 
  4402.  dc.w 64*4*11,0 
  4403.  dc.w 64*4*12,0 
  4404.  dc.w 64*4*13,0 
  4405.  dc.w 64*4*14,0 
  4406.  dc.w 64*4*15,0 
  4407.  dc.w 64*4*16,0 
  4408.  dc.w 64*4*17,0 
  4409.  dc.w 64*4*18,0 
  4410.  dc.w 64*4*19,0 
  4411.  dc.w 64*4*20,0 
  4412.  
  4413. FLYINGMONSTER_PAL:
  4414. ; incbin "FLYINGalien.256pal"
  4415.  
  4416. KEYS_WAD:
  4417. ; incbin "keys.wad"
  4418. KEYS_PTR:
  4419. ; incbin "KEYS.PTR"
  4420. KEYS_FRAMES:
  4421.  dc.w 0,0
  4422.  dc.w 0,32
  4423.  dc.w 32*4,0
  4424.  dc.w 32*4,32
  4425. KEYS_PAL:
  4426. ; incbin "keys.256pal"
  4427.  
  4428. ROCKETS_WAD:
  4429. ; incbin "ROCKETS.wad"
  4430. ROCKETS_PTR:
  4431. ; incbin "ROCKETS.ptr"
  4432. ROCKETS_FRAMES:
  4433. ;rockets=0 to 3
  4434.  dc.w 0,0
  4435.  dc.w 32*4,0
  4436.  dc.w 0,32
  4437.  dc.w 32*4,32
  4438.  
  4439. ;Green bullets = 4 to 7
  4440.  dc.w 64*4,0
  4441.  dc.w (64+32)*4,0
  4442.  dc.w 64*4,32
  4443.  dc.w (64+32)*4,32
  4444.  
  4445. ;Blue Bullets = 8 to 11
  4446.  dc.w 128*4,0
  4447.  dc.w (128+32)*4,0
  4448.  dc.w 128*4,32
  4449.  dc.w (128+32)*4,32
  4450.  
  4451.  
  4452. ROCKETS_PAL:
  4453. ; incbin "ROCKETS.256pal"
  4454.  
  4455. BARREL_WAD:
  4456. ; incbin "BARREL.wad"
  4457. BARREL_PTR:
  4458. ; incbin "BARREL.ptr"
  4459. BARREL_FRAMES:
  4460.  dc.w 0,0
  4461.  
  4462. BARREL_PAL: 
  4463. ;incbin "BARREL.256pal"
  4464.  
  4465. GUNS_WAD:
  4466. ; incbin "guns.wad"
  4467. GUNS_PTR:
  4468. ; incbin "GUNS.PTR"
  4469. GUNS_FRAMES:
  4470.  
  4471.  dc.w 96*4*20,0
  4472.  dc.w 96*4*21,0
  4473.  dc.w 96*4*22,0
  4474.  dc.w 96*4*23,0
  4475.  
  4476.  dc.w 96*4*4,0
  4477.  dc.w 96*4*5,0
  4478.  dc.w 96*4*6,0
  4479.  dc.w 96*4*7,0
  4480.  
  4481.  dc.w 96*4*16,0
  4482.  dc.w 96*4*17,0
  4483.  dc.w 96*4*18,0
  4484.  dc.w 96*4*19,0
  4485.  
  4486.  dc.w 96*4*12,0
  4487.  dc.w 96*4*13,0
  4488.  dc.w 96*4*14,0
  4489.  dc.w 96*4*15,0
  4490.  
  4491.  dc.w 96*4*24,0
  4492.  dc.w 96*4*25,0
  4493.  dc.w 96*4*26,0
  4494.  dc.w 96*4*27,0
  4495.  
  4496.  dc.w 0,0
  4497.  dc.w 0,0
  4498.  dc.w 0,0
  4499.  dc.w 0,0
  4500.  
  4501.  dc.w 0,0
  4502.  dc.w 0,0
  4503.  dc.w 0,0
  4504.  dc.w 0,0
  4505.  
  4506.  dc.w 96*4*0,0
  4507.  dc.w 96*4*1,0
  4508.  dc.w 96*4*2,0
  4509.  dc.w 96*4*3,0 
  4510.  
  4511. GUNS_PAL:
  4512. ; incbin "newgunsinhand.256pal"
  4513.  
  4514. MARINE_WAD:
  4515. ; incbin "newMarine.wad"
  4516. MARINE_PTR:
  4517. ; incbin "newMARINE.ptr"
  4518. MARINE_FRAMES:
  4519.  dc.w 0,0
  4520.  dc.w 64*4,0
  4521.  dc.w (64*2)*4,0
  4522.  dc.w (64*3)*4,0
  4523.  dc.w (64*4)*4,0
  4524.  dc.w (64*5)*4,0
  4525.  dc.w (64*6)*4,0
  4526.  dc.w (64*7)*4,0
  4527.  dc.w (64*8)*4,0
  4528.  dc.w (64*9)*4,0
  4529.  dc.w (64*10)*4,0
  4530.  dc.w (64*11)*4,0
  4531.  dc.w (64*12)*4,0
  4532.  dc.w (64*13)*4,0
  4533.  dc.w (64*14)*4,0
  4534.  dc.w (64*15)*4,0
  4535.  dc.w (64*16)*4,0
  4536.  dc.w (64*17)*4,0
  4537.  dc.w (64*18)*4,0
  4538. MARINE_PAL:
  4539. ; incbin "newmarine.256pal"
  4540. TOUGHMARINE_FRAMES:
  4541.  dc.w 0,0
  4542.  dc.w 64*4,0
  4543.  dc.w (64*2)*4,0
  4544.  dc.w (64*3)*4,0
  4545.  dc.w (64*4)*4,0
  4546.  dc.w (64*5)*4,0
  4547.  dc.w (64*6)*4,0
  4548.  dc.w (64*7)*4,0
  4549.  dc.w (64*8)*4,0
  4550.  dc.w (64*9)*4,0
  4551.  dc.w (64*10)*4,0
  4552.  dc.w (64*11)*4,0
  4553.  dc.w (64*12)*4,0
  4554.  dc.w (64*13)*4,0
  4555.  dc.w (64*14)*4,0
  4556.  dc.w (64*15)*4,0
  4557.  dc.w (64*16)*4,0
  4558.  dc.w (64*17)*4,0
  4559.  dc.w (64*18)*4,0
  4560. TOUGHMARINE_PAL:
  4561. ; incbin "toughmutant.256pal"
  4562. FLAMEMARINE_FRAMES:
  4563.  dc.w 0,0
  4564.  dc.w 64*4,0
  4565.  dc.w (64*2)*4,0
  4566.  dc.w (64*3)*4,0
  4567.  dc.w (64*4)*4,0
  4568.  dc.w (64*5)*4,0
  4569.  dc.w (64*6)*4,0
  4570.  dc.w (64*7)*4,0
  4571.  dc.w (64*8)*4,0
  4572.  dc.w (64*9)*4,0
  4573.  dc.w (64*10)*4,0
  4574.  dc.w (64*11)*4,0
  4575.  dc.w (64*12)*4,0
  4576.  dc.w (64*13)*4,0
  4577.  dc.w (64*14)*4,0
  4578.  dc.w (64*15)*4,0
  4579.  dc.w (64*16)*4,0
  4580.  dc.w (64*17)*4,0
  4581.  dc.w (64*18)*4,0
  4582. FLAMEMARINE_PAL:
  4583. ; incbin "flamemutant.256pal"
  4584.  
  4585.  
  4586. BIGALIEN_WAD:
  4587. ; incbin "BIGSCARYALIEN.wad"
  4588. BIGALIEN_PTR:
  4589. ; incbin "BIGSCARYALIEN.ptr"
  4590. BIGALIEN_FRAMES:
  4591. ; walking=0-3
  4592.  dc.w 0,0
  4593.  dc.w 128*4,0
  4594.  dc.w 128*4*2,0
  4595.  dc.w 128*4*3,0
  4596. BIGALIEN_PAL:
  4597. ; incbin "BIGSCARYALIEN.256pal"
  4598.  
  4599. LAMPS_FRAMES:
  4600.  dc.w 0,0
  4601. LAMPS_PAL:
  4602. ; incbin "LAMPS.256pal"
  4603.  
  4604. WORM_FRAMES:
  4605.  dc.w 0,0
  4606.  dc.w 90*4,0
  4607.  dc.w 90*4*2,0
  4608.  dc.w 90*4*3,0
  4609.  dc.w 90*4*4,0
  4610.  dc.w 90*4*5,0
  4611.  dc.w 90*4*6,0
  4612.  dc.w 90*4*7,0
  4613.  dc.w 90*4*8,0
  4614.  dc.w 90*4*9,0
  4615.  dc.w 90*4*10,0
  4616.  dc.w 90*4*11,0
  4617.  dc.w 90*4*12,0
  4618.  dc.w 90*4*13,0
  4619.  dc.w 90*4*14,0
  4620.  dc.w 90*4*15,0
  4621.  dc.w 90*4*16,0
  4622.  dc.w 90*4*17,0
  4623.  dc.w 90*4*18,0
  4624.  dc.w 90*4*19,0
  4625.  dc.w 90*4*20,0
  4626. WORM_PAL:
  4627. ; incbin "worm.256pal"
  4628.  
  4629. BIGCLAWS_FRAMES:
  4630.  dc.w 0,0
  4631.  dc.w 128*4,0
  4632.  dc.w 128*4*2,0
  4633.  dc.w 128*4*3,0
  4634.  dc.w 128*4*4,0
  4635.  dc.w 128*4*5,0
  4636.  dc.w 128*4*6,0
  4637.  dc.w 128*4*7,0
  4638.  dc.w 128*4*8,0
  4639.  dc.w 128*4*9,0
  4640.  dc.w 128*4*10,0
  4641.  dc.w 128*4*11,0
  4642.  dc.w 128*4*12,0
  4643.  dc.w 128*4*13,0
  4644.  dc.w 128*4*14,0
  4645.  dc.w 128*4*15,0
  4646.  dc.w 128*4*16,0
  4647.  dc.w 128*4*17,0
  4648. BIGCLAWS_PAL:
  4649. ; incbin "bigclaws.256pal"
  4650.  
  4651. TREE_FRAMES:
  4652.  dc.w 0,0
  4653.  dc.w 64*4,0
  4654.  dc.w 64*2*4,0
  4655.  dc.w 64*3*4,0
  4656.  
  4657.  dc.w 0,0
  4658.  dc.w 64*4,0
  4659.  dc.w 64*2*4,0
  4660.  dc.w 64*3*4,0
  4661.  
  4662.  
  4663.  dc.w 0,0
  4664.  dc.w 64*4,0
  4665.  dc.w 64*2*4,0
  4666.  dc.w 64*3*4,0
  4667.  
  4668.  
  4669.  dc.w 0,0
  4670.  dc.w 64*4,0
  4671.  dc.w 64*2*4,0
  4672.  dc.w 64*3*4,0
  4673.  
  4674.  dc.w 0,0
  4675.  dc.w 0,0
  4676.  
  4677.  dc.w 32*8*4,0
  4678.  dc.w 32*9*4,0
  4679.  dc.w 32*10*4,0
  4680.  dc.w 32*11*4,0
  4681.  
  4682. TREE_PAL:
  4683. ; incbin "tree.256pal"
  4684.  
  4685.  
  4686.  even
  4687. ObAdds:
  4688. ; incbin "ALIEN1.ptr"
  4689. objpal:
  4690. ; incbin "ALIEN1.256pal"
  4691. TextureMaps:
  4692.  dc.l 0
  4693. ; incbin "ab3:includes/newTexturemaps"
  4694. TexturePal:
  4695.  dc.l 0
  4696. ; incbin "ab3:includes/texture256pal"
  4697.  
  4698. testval: dc.l 0